Recent Posts

RSS Feeds

Software Summit Slides Away...

I finally got my slides off to CSS. Hope to see you there!

Permalink     No Comments

Software Summit 2007

The time is almost upon us to get into the Keystone mode. The Software Summit starts in just a few weeks. I'm really stoked about the content this year and I hope I get to see you there.

One of my favorite things about the conference (besids the content) is the location. Keystone is absolutely beautiful and some years there is early season skiing. Its been really wet this year all summer. Wet summer does not necessarlly point to snow winter but it can't hurt. Its going to be fun!

Permalink     No Comments

Colordo Software Summit

Software Summit is a little less than 6 months away, if you don't already have approval to go, get it now. You will learn a lot from the content and the venue is fantastic!

Permalink     No Comments

Software Summit Wrap-up

Well its over, what a bummer. I had a great time this year from meeting lots of cool people (speakers and attendees) to stuffing my face with great food. Another cool thing this year is a friend of my from the east coast came and we got to hang out a bit. I highly recommend this conference to anyone involved in software development.

Permalink     No Comments

CSS - Dave Landers on Annotations

Cool talk. Dave is a great presenter and has a great demeanor with the crowd.

my notes;

What are annotations?

1)    new java modifier – not really a modifier but a lot like them (public, private etc)

2)    Gives us a way to extend the list of modifiers

3)    Don?t affect semantics of the class they are on but can extend the way the code is used

 

Annotations defined –

@interface FixMe {String value(); }

  • Defines a ?Fix Me? annotation
  • Has One String attribute (value)
  • Its kind of like a java class

 

Code annotated

@FixMe(?Missing the method body?)

public void theMethod() {}

 

to be used at build or run time

 

Any program element can be annotated, class, interface, package, annotation, methods, constructors etc.

 

Why do annotations?

Probably the j2ee space, things like web services and ejb are trying to simplify the annotations allow you to do the whole thing in one place (like using xdoclet). Web services etc.

 

You can write your own annotations.

 

XDoclet is cool but is not part of the code. Annotations are modifiers not docs, strongly typed, can persist in the class file, can persist at runtime.

 

Only three in J2SE 5.0 - @Deprecated, @SuppressWarnings not part of javac though, 

 

@Override useful and is a signal to the compiler that its overriding a method, gives the compiler a warning that it should make sure the method is found in a super class, will cause a compiler warning if you are not over-ridding.

 

Kinds of annotations

Marker annotation – either their or not, kind of a Boolean marker that means something by being present (@Deprecated, @Override)

Single Value annotations - @SuppressWarnings({?unchecked?, ?deprecation?}) etc

Multi-valued annotations

@Review(reviewer=?Landers?, date=?4/1/2004?, comment=?Close stream in finally block?) a more complex annotation that has more information.

 

Defined with @interface and can have attributes, automatically extends from java.lang.annotation.Annotation (don?t put that into your class)

 

@interface Foo {

String reviewer() default ?[unknown]?;

String date() default ?0/0/00?;

String comment();

}

 

date and review have default values that get put into the annotation if they are not specified. If something is marked having a default its optional, other wise its required to have a value in the use.

 

@Foo(comment=?gak?) would be valid but leaving off comment would  be invalid.

 

Also discussed some of the stuff around defaults and being able to use the ?value? named attribute.

 

Some examples on all the stuff you can annotate with the FixMe annotations.

 

Meta-annotations, four come with J2SE 5 - @Docmented, @Inherited, @Target, @Retention

 

@Documented says that the annotation shows up in java doc

 

@Inherited – missed this bit

 

You can specify where your annotation can show up with the @Target thing

 

@Retention tells the compiler where to put the annotation, SOURCE says only in the source code, CLASS says put it in the class but not at runtime, RUNTIME says the annotation is carried all the way through.

 

Accessing annotations – lots of places to use them, development etc. For example if you have an @Singleton annotation a checker could look for this annotation and warn you if your class does not look like a singleton.

 

EJB deployment could build the deployment descriptor at deployment time

BeanInfo generator from an annotated java bean

 

TestNG – an annotation to mark a test method

 

Annotation needs @Retention(RUNTIME) to do reflection, Class, Consgtructor, Field, Method, Package have new methods

 

boolean isAnnotationPresent(Class<? Extends Annotation> a)

<T extends Annotation> T getAnnotation(Class<T> a)

 for example

 

FixMe fm = class.getAnnotatioin(FixMe.class);

System.err.println(?fix me: ? + fm.getValue());

 

Now doing a cool example using annotations – reporting the FixMe annotations. Also wrote a class loader that refused to load classes that need fixing (i.e. have FixMe annotations).

 

Here is the cool part – apt the Annotation Processing Tool

 

JDK tool for processing source annotatioins

Cleanear model fo source and types that doclet

Supports recursive processing of generated files

Multiple processors (vs. single doclet)

Docs @ http://java.sun.com/j2se/1.5.0/docs/guide/apt/index.html

 

APT can be recursive, the process can build code that is annotated, and then run its self on the generated code.

 

To use APT - write an AnnotationProcessFactory that creates AnnotationProcessors then run the apt tool.

 

Factory

 

Collection<String> supportAnnotationTypes() return annotations supported by this factory

 

Collection<String> supportedOptions();

 

AnnotationProcessor getProcessorFor(Set<AnnotationTypeDecloaration> atds, AnnotationProcessEnvironement env); - return the annotation process for the types and env describe by the args.

 

The processor has one method public void process();

 

Usually iterates through the classes and does some stuff using the Visitor patern

 

You specify which processing factories in the

META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory file (just like the XML stuff)

 

Going into more examples. I have to bail for my next talk thoug. Good stuff.

Permalink     2 Comments

CSS - Phipps Keynote

Still trying to get all my notes into my blog.

Very interesting talk, basically that the world is changing and open source is part of the change (making it happen and a result of the change). The basic change is the fact that we are massively connected. The video was hillarious.

Great movie with 3 guys sharing an apt not talking to each other but over iChat, and cell phones.

 

Massively connected world – many companies still see open source as a way to save a few dollars. Talking about philosophy, some random crazy idea in a philosophers head (say post-modernism) eventually makes it into accedemia then makes it into govt & business then into the underlying motive of the actions of common people.

 

In 1994 – painful to travel, cash & travelers cheques, airline tickeds, telphone kiosks & bureaux, poste restante – painful, painful

 

In 2004 – not quite as painful, ATMs & global credit, paperless air travel, GSM mobiles & calling cards, email & internet. Around the world everything is infested with internet café?s. Prague, Southern New Zealand.

 

Assertion is that there is an assumption of being massively connected. Everything and everywhere people assume connections.

 

Massively Connected Effects

  • Travelers Tales (earlier)
  • Web logs
  • Web services concept
  • Open Source Development
  • Globalisation of politics
  • Online activism in USA

 

Massively Connected Era

  • Rapid Evolution
    • In just one decade the world have become massively connected
  • Tech Promotes Connection
    • Device proliferation, growing bandwidth, service oriented architecture -> man dimensions/layers of relationship
  • Fractal Architectures
    • We are moving to networks of networks

 

Waves Of Change – scrolling stuff along the bottom

 

If you are massively connected;

  • There would be no boundaries to defend
    • Becomes a matter of digital identity
  • Software becomes network-resident services
    • Web services – not specific WS* but the concept of web services, spontaneously forming groups of independent services
  • Software could not be priced on implementation details
    • Subscription
  • System stakeholders would be enfranchised in development
    • The old system, put smart people in a room tell them to build something cool and then charge people to come into the room. That way does not work anymore. Open-source is the way to go not, then all the smart people are available or are able to work on it.

 

Historical Break – History repeats its self, it has to, no one listens

 

Yochai Benkler – has this idea for general production

 

In the old way – pre-industrial revolution

  • Individual artisans
  • Craft guilds
  • Community Standards
  • Shared methods

 

The artisans would build apprentices. This was a major shift in the economy of Europe. Created a cycle where artisans could add to the wealth of the commons, the commons would spend money they had on arts.

 

This was the demise of guilds.

 

Open source is a return to the  ?commons-based peer production?

  • Community
  • reputation-based
  • shared materials
  • Open Source communities – the new Guilds.

 

And the new industrial revolution?

Will exploit blind spots

 

Open source is about liberty not about economy.

 

People think of open source means free, the $ is not the important thing, the liberity is the important thing.

 

http://www.benkler.org/CoasesPenguin.html

 

Open Source Methodology

  • Commons-Based Peer Production
  • Commons Based
    • Facility by Commons-creating licenses
  • Peer community
    • Neglected
    • Facilities by community governance
  • Production
    • Focus on code not specification

Open Source Communities

  • Open Source: Agile Development Done By a Community
  • If there is no community, there?s no open source; it takes more than just applying an OSD license to build this community

 

Retaining Freedom?

  • Licenses license copyright. Who owns it and why?
  • Who are the committers and who decided?

 

Why Open Source

  • Research suggests the #1 factory is?
  • Choice and Freedom
    • Software features, support provider, platform
    • The freedom to choose again
    • Worth $10M to City of Munich?
  • Quality – supposed quality, definitely no worse
    • Open source development at its best is like XP on steroids, flamed by 100?s of people for each line of code you write
    • More statble & reliable code

 

Freedom In Common

  • Objective of OSI (open standards initiative)
    • Freedom through standards
  • Objective of FSF
    • Freedom through source access
  • Objective of Java & JCP
    • Freedom through compatibility
  • Object of OSI (open standards initiative)
    • Freedom through licensing
  • Each solving a different part of the same problems: freedom is the goal

 

Software freedom is the goal

  • Freedom to use
  • Freedom to choose
  • Freedom to develop
  • Freedom to profit
  • I want you to have it for free and for it to be easy to use and there to be no lock in and for us to get it all

 

Are Standards Enough for us to keep our freedom?

Is Free/Open Source Enough?

 

No guarantee of freedom alone

Open source is about freedom to develop software. The goal is freedom (liberty) not about $

 

OpenOffice.org Protects Both Freedom Groups

  • Open Source protects developers
  • Open formats protect deplorers
  • Interoperability protects investments

 

Apache Geronimo protects both groups

  • Open source community protects developers
  • Compatibility (JSR?s) protects deployers

 

 

Assertion based on the fact that Sun is using the community (commons) to generate wealth, then Sun contributes back to the community enriching the whole community. In the vein of the ?means of production paper?. His assertion is that this is a great thing. It?s a cycle that increases everyone?s wealth.

 

Microsoft Settlement – has sun sold out?

  • The answer is of course no, ridiculous.
  • HP has multiple businesses devoted to success of windows,
  • IBM has 3650+ employees devoted to windows success,
  • red hat recommend windows for the desk top,
  • Sun has just made peace and is now work to protect interoperability, no employees dedicated to Windows stuff.

Permalink     No Comments

Michael - evolution of EJB to 3.0

Cool talk on the EJB 3.0 stuff. Sounds like its going to be good.

Mike Keith – oracle guy on the expert group

 

EG is trying to solve the problem that lots of people are using EJB but not a lot are happy about it.

 

Life before EJB?

1)    solving the problem over and over again, there was no way to capture business logic on the server

2)    Community started to get behind the idea of component model for the server side

EJB started in April 1997 (yikes has it really been that long) first release in March of 1998. (I can?t believe it has been this long, I was at InLine at the time and we were playing with the spec before it was real).

 

Lots of hype of the original spec.

 

Original goals

  • Allow components developed separately to be deployed together an interoperate in the server
  • Define development  and deploy contracts
  • Lessen the knowledge required to develop components
  • Provide access to the lower level stuff for advanced developers
  • ?write once, run on any EJB container?
  • Interoperable with CORBA

 

Time line – not getting all it but June 1999 is where the J2SE and J2EE names happened

 

Discussion of the roles – cool graphic

 

Discussion of the contract between the component and the container

 

Discussion of the client and the container

1)    Each entity has an identity

2)    Container makes the home available under jndi

 

EJB allowed declarative transactions, very cool stuff because it makes us not have to worry about it any more, even distributed (from EJB1.0)

 

Bad news – everything was remote even in the same VM the RMI machinery was invoked. Some containers over rode this and provided ?local? entities for the same VM.

 

EJB 1.1 is where the xml deployment descriptor was first released.

 

Bean references – bit of code and a discussion of the reference stuff. Basically crufty.

Transactions – removed tx_bean_managed because of transaction isolation problems

 

Now on to EJB 2.0

1)    Finally got EJB QL and finders – portability not possible before

2)    Internal ejbSelects

3)    Relationships – finally!

4)    Local homes/interfaces

5)    Entities now abstract (3.0 will go back, yikes)

 

Discussion of EJB QL

 

Home methods – like a static method on a bean, without regard for identity, typically uses an ejbSelect

 

EJB 2.1 – timers, coarse-grained business process/workflow events, not real-time

 

EJB 3.0

1)    extensive use of annotations

2)    remove xml deployment descriptor requirements

3)    configuration by exception use defaults to avoid unnecessary declarations

4)    eliminate requirement for home interfaces use and EntityManager

5)    inversion of control techniques (dependency injection)

6)    eliminate requirement for component interfaces

7)    optionally allow entity to implement interfaces

8)    entity is pojo-like concrete class – now you can make your objects persistent

9)    callback (life cycle) methods no longer required

10) detached execution model, side-step the DTO pattern

11) support for entity inheritance and polymorphism – groovy!

12) many ejb ql enhancements

13) support for native sql queries – of course don?t use this if you want to be portable

14) dynamic query api

15) scrapped remote entity model

16) standard for object-relational mapping metadata

 

Entities are required to

1)    define a no arg constructor

2)    attributes should be protected or private (access internally but not externally)

 

@Entity says is an entity, @Id says that attribute is the identifier

 

EJB QL enhancements – bulk update, projection lists, added outer join, return different object types (even not persistent)

 

SELECT new OrderInfo(o.id, item.product.name, item.cost) FROM Order o JOIN o.lineItems item WHERE o.totalCost > :amount

 

Named parameters!

 

GROUP BY and HAVING added as well

 

Subselects – select employees that have spouses:

 

SELECT DISTINCT emp from Employee emp WHERE EXISTS(SELECT spouseEmp from EMP?)

 

 

O-R Metadata

  • Direct and relationship mapping types
  • multi-table mappings
  • support for id generation tables
  • schema definition/generation
  • cascading operations across relationships
  • egger/lazy loading
  • optimistic locking fields
  • inheritance
  • dependent or aggregated

 

Defaults are reasonable, if you want to over ride simply do so

 

@Column(name=?SHIP_ADDR?) overrides the default

 

getShippingAddress, the default would be SHIPPINGADDRESS

 

Permalink     2 Comments

Stelting - Testing

A good talk on the nature of testing an the options we have to test J2EE stuff. A great explanation of mock objects and using easymock. Good stuff.

Testing in the container vs testing outside the component.

 

Outside the container has the following downsides

1)    requires test emulators

2)    doesent provide container specfic service

3)    know how it works mostly but not how it works in context

 

test code outside and components inside

1)    relies on communication channel to container

2)    cant use unit test j2ee components because they are not front facing

3)    can be difficult to control test granularity because the ?front facing? components tend to be bigger

 

Test code, components inside the container

1)    requires a trigger

2)    test code depends on container services (some times we want this)

 

J2EE testing tech – vendors have lots of stuff

Open Source

a)     jUnit

b)    mock objects

c)     cactus

 

JUnit is cool because its tightly integrated, not oriented towards testing J2EE components. JUnit is also the typical foundation of choice for more specialized testing frameworks (i.e. cactus, etc).

 

Doing example of testing a dao with a junit test showing the integration with NetBeans. Talked about setting up a connection via a factory so that you can return a connection outside a container.

 

Now talking about mock objects. Key concepts

1)    create component,

2)    create mock objects

3)    call desired test behavior on component

4)    set expectations/check output

 

Examples of doing mocks, good code bits.

Permalink     2 Comments

Bruce Snyder - Geronimo Intro @ CSS

I was too busy listening to take really good notes in this talk. Over all very good though, a very high level overview of what is there and what has yet to mature. I really like Bruce's presentation style too, he did a great job of fielding questions (too many from me, thanks Bruce!). I highly recommend that you see his talks at Apache Con. Here are my somewhat sparse notes.

Snyder - why Geronimo - wire together the stuff to make a J2EE container instead of building from scratch (OpenEJB, Jetty, MX for J etc etc).

Installing Geronimo - use a maven goal and you can easily get it from the maven repo

Start Geronimo - use maven again (there are command line ways to do all this stuff)

Deploy to Geronimo - JSR 88 deployment tool again using maven, first distribute the doo-dad then start it up with deploy:distribue and deploy:start.

Stopping Geronimo - maven again

Geronimo Deployment Tool - JSR-88 deployment tool, deployment looks a bit like a POM file on the top, the gbean is where the real stuff happens. It uses inversion of control to define the deployment. The gbean has a bunch of attributes (get/set) and the deployment plan is where the attributes are set. You can specify references as well.

There is no command line thing to shutdown you app. To start java -jar bin/server.jar to deploy java -jar -deploy foo more but did not get it.

You can define everything to run your app in the code for you app (connection pools, jms queues etc) in the deployment plan which can then be version controlled with your app.

Logging is again controlled by a gbean and the innards of the gbean are just Log4j xml file stuff.

Spring Applications - no deployer yet that recognized spring.xml you can fire up an arbitrary collection of spring enabled services, register Spring enabled services, no GBean wrapper yet.

Permalink     1 Comment

John Soyring - Keynote

Overall I enjoyed the talk. It was very similar to last year. A very long list of all the skills that IBM needs in global services that they don't have as well as lots of interesting examples of cool stuff that is going on. The Grid stuff looked coolest, something I really would like to get into.

Market Dynamics driving software & services

a)     75% of CEOs place a high priority on rapid response

b)    only 10% believe they can

Market Dynamics also had a huge impact over the last 2 years

a)     .com bomb into the toilet

b)    starting to come back

c)     2004 market uptick

d)    IBM has 8 or 9% growth

e)     Russia, China, India, Brazil

Consolidation across industries

a)     paper company bought OfficeMax

b)    change is happening rapidly

c)     these things allow the companies to change how they do business – requires IT changes

d)    App silos in legacy systems

e)     5 trillion dollars invested in legacy code – PL1 & Cobal

Inflection point of our industry

a)     we are at the point of standardization

b)    electricity was standardized so we can use a gizmo bought at target anywhere that has electricity, prior to standardization you could not

c)     train – before standards NY to St. Louis required several changes of train cars to get that distance, after standardization we got iron from Midwest could go to Pittsburg – the whole economy boomed because stuff could get from one place to another

Web services will be $11 billion worldwide in 2008 IDC

 

?Linux will overtake windows as the number one operating system based on new server shipments? – Stacey Quandt, analyst – I don?t buy this at all

 

ATM – is going to Linux

Point of Sale systems are going to Linux, its taking over the world J

IBM – Workplace 2.0

 

Standards are important – ?standards contribute more to economic growth than patents and licenses?

 

Open Source is driving open standards

 

Workplace 2.0 is built on Eclipse – have to dig into this!

 

Open source is a huge contributor to innovation

Builds great communities

A great way to build open industry standards

Enterprise customers are asking

 

Linux is growing almost as fast as Windows or even faster

 

Eclipse – 39million downloads – 12% linux, 86% windows

 

CapGemini – using Eclipse to speed up software delivery

 

Tools - ETTK on alpha works some cool looking stuff

 

Grid computing stuff – starting to mature its at the point now where mission critical apps can be deployed (www.gridforum.org)

 

Grid computing – used by Charles Swab does your net worth calculations now in seconds, took 3 minutes before

 

Pugh and Associates – cost of computations was 10% of what it used to be.

 

US Tennis Association uses grid computing to ?rent? out computing to allow protein folding calculations. When it is raining no one is using the servers because there is no tennis going on. With the switch to grid computing they went to 85% utilization of the servers 24X7X365

 

Autonomic Computing – electricity black out in 2003 – cool graphic showing the various piece parts of autonomic computing,

a)     self configuring

b)    self healing

c)     self optimizing

d)    self protecting

 

Also put standards around this – put event logs together to find root causes quickly so we don?t end up with what happened to the power grid

 

Privacy is a huge thing – P3P

 

J2EE 1.4 is big and getting bigger – IBM is moving everyone to Portlets – JSF is supposed to make building web apps easier esp portlets Also Service Data Objects are big.

 

Pervasive and wireless computing – autos, phones etc. OSGi

 

RFID – walmart etc

 

Web services – not nearly enough people to make all the work happen, a big part of what drives outsourcing is because we just can?t find the people to do the work.

 

Business are at the point where they are functionally optimized for tasks but not across an entire business process. As an example is IBM looking at their supply chain and linking the existing systems together were able to drive down the cost by 5 billion dollars, enabling them to reduce the cost of their servers but sell more servers.

 

MDA is big and getting bigger

 

Skills – we have a surplus of the wrong skills and a shortage of the skills we need

 

IBM spends 250K per new employee for training the first year. Northface University will deliver graduates that are employable right out of school.

 

Skills that are in great demand, if you know this stuff you are more than employable.

 

1)    System or Solution Architects

2)    Business Process Integration

3)    Portal Design and Legacy Integration

4)    Performance analysis & Tuning

5)    Security and Privacy

6)    Orchestration 7 Provisioning

7)    Linux Servers

8)    Virtualization (grids, SANs, etc.)

9)    zSeries

Permalink     No Comments

Software Summit Kick-off

The Summit is starting today. Very cool stuff!

Permalink     2 Comments

Software Summit Wrap-up


Well the Colorado Software Summit is over, how dissapointing.

I've posted a summary of everything I did on my java.net blog.
Enjoy.

Permalink     No Comments

Globus Kit - Grid Computing on the Cheap


Cool talk on the Globus OS tools for doing grid computing. Very cool stuff.

my notes

Advanced talk on Globus tool kit 3.

 

(http://www.softwaresummit.com/2003/speakers/brown.htm)

 

GT3 Notification

1)    notification source fires events

2)    notifiction sink receives

3)    associate with some dummy service data

4)    add “ogsi:NotificationSorurce/Sink” to GWSDL

5)    sink calls addListerns on sources Service DataSource calls notifyChange to fire notifcation

6)    sink implements deliverNotification to catch

There is no tool support for the java files to declare what the GWSDL tools should do to get source and sink. However with JSR 175 you could imagine a way that this declaration could end up in java file.

 

The idea behind this is to do coarse grained notification.

 

The Service Data:

1)    structured data associated with a grid service – zero or more Service Data Elements (SDE) per instance

2)    SDEs are described by an XML grammar – java bean is generated for each SDE type (defined in an XML schema? He said .xsd file)

3)    Client calls findServiceData(“SDE1”) – careful of misspelling

4)    Helper methods extract populated Bean instance

5)    Use conjunction with notification – add payload to event.

When the interesting ‘data thing’ gets pushed along with the event. The client gets the data with the event. The other side is a pull notification where the client gets dummy data and then has to call back to the poster to get the data.

 

The SDE’s are associated with the service its self and the instances of the services

 

SDEs in every grid service

1)    GridServiceHandle

2)    FactoryLocator

3)    TerminationTime

4)    ServiceDataNames

5)    Interfaces – names of all interfaces that a service implements

 

Quick of write a grid service

1)    define all aspects of the service interface –java or gwsdl

2)    generate grid support code

3)    four mor steps

 

Grid project – example

1)    Distributed SBG Rendering

2)    RenderSourceService

a.     Farms out the svg file and a rendering area to each worker

3)    RenderWorkerService

a.     Builds a jpeg from the specified area of the svg file

4)    GUI Java Application

a.     Creates RenderSourceService via factory

b.     Triggers worker service to get work from source service

c.     Watches for status notification and finished jpegs

d.     Displays all status and tiles the sub-mages as completed

 

If I want to make my machine available I have to download Globus which takes 30 minutes or more. And there is a bug that he could not make work so he made it all local on his machine (wouldn’t it be cool if we could do that during the demo?)

 

GT3 Features

1)    factories

2)    notification

3)    service data

4)    standalone clinet

5)    could it do more, sure! This is all we need for the demo.

 

Next was code. Cool Stuff.

 

Eclipse integration is coming but not there yet.

Services are defined by interfaces, duh…

Used batik from apache to do the actual rendering. Batik gets the URL and can render from that.

 

The RenderWorker takes a renderSourceHandle which referres to the RenderSource via the handle (i.e. this is the uri to the RenderSource service) to get at its work.

 

Must have a ‘schema’ directory conisident with the code directory (foo.bar.objects, foo.bar.schema).

 

The xsd describes the methods and their arguments and their return types.

 

anyType represents ‘Object’ if you will. It’s the generic type. Used to represent the returned image from the worker service.

 

Basic steps, get a factory, use the factory to create the manager service, use the location stuff to find the created service, set the initial parameters.

 

Start some worker thereads (passing the handle to the manager) that will go back to the manager service and ask about the work to do.

 

The locator is used to find several workers and then tells them to start. They will in turn go back to the manager and ask for some work.

 

When notification happens we get the any data stuff (defined in schema) then we have to do some Corba like narrowing. To get the any type downcasted to the type we want.

 

GUI – creates a render factory instance and 16 renderers (which could be running on our machines). Distributed rendering of an image across 16 threads (which could have been on our machines). Very cool demo, can’t wait to play with the code from the CD.

Permalink     No Comments

J2EE Metadata Talk


Just finished Simon's talk on JSR 175.

here are my notes

Simon Nash – member of JSR 175 team

(http://www.softwaresummit.com/2003/speakers/nash.htm)

Back ground and motivation

JSR 175 specification

1)    Source syntax

2)    Processing model

3)    Runtime api

4)    Class file format

5)    Standard annotations

 

Background – java is imperative not declarative, java has declarations but only for core language constructs. The declaration of ‘the what’ limits the scope for tools to help the developer be more productive.

 

The annotations are beyond the bounds of the language, instead it fits into the language. Its not about making Java huge to handle every  thing, its about making a way for you to extend stuff so that you can declare what in your java classes (i.e. this class is a web-service). The annotation are not part of the program logic but can affect the meaning of the program (i.e. the declaration that the class is a web service might causes WSDL to be generated at deployment time). An annotation will not change the way assignment works or the way that try/catch works.

 

Semantics of the annotations can be standard or user defined. (I’m assuming that at some point we will see how to use user defined annotations. Just said we’d be getting to that…)

 

Benefits – productivity, clarity, flexibility, correctness – all the same stuff you get from something like MDA or other model based code generation. I like this but its just not new. Now that its becoming part of the language though it seems that we might be at the cusp of general acceptance of meta-data based programming (i.e. MDA). If you build bad stuff with this it will be bad. Clearly you can build bad stuff with anything, this is no difference.

 

Q: will AOP make use of this, A: probably, seems a natural fit (the join points should be able to be specified with these annotations).

 

175 – simple meta-data in source code, attached to program syntactic elements, limited range of type, stored in the class file (available at runtime), can be read at runtime.

 

Cool example of declaring a web service for a class. Interesting thing to note is that the types of the attributes for annotations is only a limited set (most noteably not Object or any arbitrary subclass, only the types defined in the JSR to be able to be used).

 

Attributes can be defaulted.

 

An example of @WebService annotation for a class then adding an @Operation on one of the operations. The @Operation is not explicitly contained in the @WebService.

There are 4 meta-annotations @Target – what can the annotation end up on, @Retention – how far to carry the annotation forward, @Inherited – declares if the annotation should be inherited, @Documented – should this stuff show up in the java doc.

 

@Retention – runtime, class or source – class is default, runtime makes them available for reflection

 

Since source is the default retention it seems that the expectation is that post processing on class files will be the norm.

 

Annotations can be used anywhere that ‘public’ can be used. They are seen as modifiers.

 

You will be able to annotate your package with a package-info.java file.

 

Processing Model:

1)    Source based

2)    Class based

 

You can integrate your annotation processors with the java compiler? There was a slide about that but it appears that its not ready yet. The way they are thinking is making a plug-in architecture for the compiler. Today what you have to do is post process the class file or process the java code (i.e. you have to parse the java…)

 

JSR 175 extends the reflection API’s to get at annotations. There is a new thing called AnnotatedElement.

 

More annotations are changed or defined in JSR’s (181, 207, 224 others as well).

Permalink     No Comments

Portal Talk


Just finished Paul's talk on Portals. Very interesting. I can't wait to get back to normal life so that I can spend some time playing with all the cool stuff that I've learned here...

my notes

Paul Giangarra – Portals

 

Third or forth generation portals are about collaboration? Missed the detail on that comment.

 

What is a portal?

1)    a place to start for your users

2)    a place to aggregate the stuff that people want to do

 

Value of Portals

1)    simplify access to resources