[JavaPolis2007] EJB 3.1

Secification lead Kenneth Saks was updating the JavaPolians about the status and the news of EJB 3.1.
So the focus of this JSR is on two themes, one is to improve on the ease of use, which was already the main thing in EJB 3.0, put can be continued. And additionally to the rather minor features added in EJB 3.0 there will be some additional features in EJB 3.1.
Timewise the first early draft is planned for beginning 2008.
The local business interface will be obsolete, but still the client should not use the new() semantics.
There will be an @Singeleton-Annotation to enable shared data and make the handling mcuh easier. Since the AppServer is normally taking care of concurrency by either instanciating another bean (stateless session bean) or synchronizing the access (stateful session bean) the access to methods in an @Singelton annotated bean will be synchrozied by default. But the developer can specify bean managed concurrency which one should use to distinct between read-only methods (non-synchronized) and write-methods (synchronized).
IMO this will be one of the new performance pitfalls in JavaEE 6 where a lot of people will run into.
All in all a nice talk an d definitly something to keep an eye on.

Posted by Karsten at 13:17 | Comments (0) | TrackBack


[JavaPolis2007] Thinking in Flex

So after JSF got a bit boring, I went to look around at the other talks and finally stayed at thinking in Flex, which was again a presentation by two presenters, but this time Bruce Eckel and James Ward played along quite nicely. While James was showing of and coding wild, Bruce was there to highlight some of the pitfalls or bigger picture facts.
They showed some nice demos with drag'n'drop functionality from a flex app data grid into Excel or a nice app with cover flow like in iTunes, build just in three lines of code.
The demoing was done with the flex builder, which is an Eclipse extension and can be downloaded as a test version for free. The SDK itself is currently being open sourced, the flash player will be open sourced and there is a community at flex.org.
The Flex builder has an build in debugger.
A lot of fancy UI effects are build in, like an accordion with a lot of details to be specified like a bounce effect with timing.
Then James went on and showed AIR, which is a superset of the webapp, so you have all the functions from an webapp, which enables you to reuse your webapp code. AIR also provides some functions like local file access and a DB storage via SQLite. AIR itself is based on Webkit (as Safari).
You can install an AIR application just like a normal program and then launch it via Windows->Start->Programs for example.
There are also already testing tools like Flexenium, which is based on Selenium to test the UI, but also plugins for commercial products like Mercury Testrunner.

Posted by Karsten at 22:27 | Comments (0) | TrackBack

[JavaPolis2007] Be productive with JSF

Again a talk of two presenters - Ed Burns and Yara Senger. Like in tennis a double is more difficult to play than a single and although both are good and experienced presenters the talk had some hiccups.
What I really liked was how Ed set the stage by looking at the history of distributed app UI, which began with dumb terminals like PLATO (1960ies), Mainframes, IBM, .... The traction and popularity then went to systems like X-Window, Windows, MacOS, etc. But since 10 years the Web UI is the rising start.
After that the history of web framework war and struts was once again mentioned in a JSF talk and before going into JSF itself, its unique selling points were highlighted like the fact, that JSF is a standard, were backward compatibility is guaranteed and it will be part of every JavaEE 5 Server, so the developer and the deployer don't have to handle the jars them self.
Since the talk continued with the introductory style I went on an went to "Thinking in Flex".

Posted by Karsten at 16:33 | Comments (0) | TrackBack


[JavaPolis2007] - Day 1 - Hudson

The last talk of the day that I went to was about Hudson, the continuous integration system.
Hudson ...

  • seems to get momentum, if you look at the increasing mailing list traffic, 35 plugins at the moment, and it is used in many public
    projects like Apache Lucene, Netbeans, ...
  • Hudson is build from ground up for extensibility, so even the core features are plugins and there is a special Maven support for plugin developers.
  • is runnable via commandline (which will start an embedded servlet container) or simply as a .war-file in an servlet container
  • has a nice UI
  • nice comfort functions (tag builds, see for how many builds a test already failed, ...)
  • Maven integration, so one doesn't have to configure Hudson to pic the javadoc from folder x, the test results form folder y etc. It simply reads the POM and knows where the stuff is.

    I definitely have to take a look at it. I worked already with Cruisecontrol and Luntbuild and although they are doing their jobs well, Hudson seems to go a step further.

    Posted by Karsten at 23:40 | Comments (0) | TrackBack
  • [JavaPolis2007] - Day 1 - The Zen of Agile Management

    This was an overall nice talk given by David Anderson with a couple of group exercises in between. Although it is difficult in a pretty anonymous audience to collaborate a few groups tried it and even on your own the exercises kept you awake and made one think about the subject.
    First exercise was on "How to create or destroy trust?"
    Create trust by: being open/honest/transparent, explain decisions, enable communication, ...
    Destroy trust by: hidden agendas, negotiation, withholding information, hierarchies, focus on procedures, ...

    David proposed to get naked! Show all the information you have which will build trust and increase the performance of the workforce.
    Second exercise was about tracking value delivery. The easiest way to increase productivity is to focus on quality! Too much work in progress slows down the productivity, so you sometimes even have to force people to stop starting new things.
    Focus on Quality was one of the key points

  • design and code reviews
  • code analysis
  • test first development
  • automated unit tests
  • Continuous Integration
  • Formal system testing by professional testers

    Identify your value chain:
    e.g. idea - analysis - design - code - unit test - system test - acceptance test
    Based on that identify your bottleneck (which was exercise 3):
    Where do you think is the bottleneck?
    How to confirm this?
    Actions to maximise the utilisation of your bottleneck resources
    What policies are required to subordinate everything else to your exploitation decision

    Another key point was that knowledge is perishable (so requirements rot just like bananas)

    Then he went on to planning an risk and took Wimbledon as an example for planning with varieties and difficulties. The men's final is always on the second Sunday even if it rained during the week (which happens quite often). So if you have likely causes to interrupt your schedule plan them in, but if the risks are quite unlikely and everybody understands that the schedule will be late (like an earthquake) do not plan for them. Risks are also ok to take if the expectations are accordingly (so that the customer knows, that you might not hit the first target date, but rather the second one.

    Finally David summed up his recommendation:

  • increase trust
  • reduce bureaucracy
  • look at your bottleneck
  • use metrics as they enable management and use lead time as one of the metrics
  • Ask yourself: "How can you serve your team better?"

    Posted by Karsten at 22:25 | Comments (0) | TrackBack
  • [JavaPolis2007] - Day 1 - Seam in action - Part2

    The second part of this session was delivered by two guys from Lunatech, so no Seam Commiters or JBoss employees.
    Unfortunately one of the guys was hardly understandable since his French English was hard to follow.
    The talk first started again with an intro to JSF and Seam-features.
    Then they reported difficulties to migrate from Seam 1.2.1 to 2.0 which was partly due to the migration from JSF 1.1 to 1.2. This is a big contrast to Spring or Struts which do very conversative releases (drop-in replacements)
    The documentation of seam was partly confusing especially if you where new to JSF, since the boarder between plain JSF and Seam is blurring and if you do not know the hard way (plain JSF) you do not get the easy way (example in Seam).
    They really liked facelets, since it made it possible to use the plain HTML.
    Starting problem with no layers as a start, since layering is optional in Seam. So they started simply with one layer, and later extracted a DAO layer.
    They had problems with the supported UI testing, but it should get better in Seam 2.0. In container and integration testing was difficult to set up, so it was skipped.
    Still they had some criticisms with seam

  • not URL-friendly pages
  • defaults to stateful
  • missing backward compatibility
  • confusing validation framework
    Regarding the future of Seam it probably is the next Struts and will be standardised with JSR-299 (WebBeans), but still needs to overcome some drawbacks like missing Restlest support and standardised Ajax architecture.
    All in all it was a nice talk with some nice pointers on how they struggled and what they liked and what they didn't. Still this part wasn't as good as the first part. It included some repetition from the first part and some rather basic code fragments were explained very long.

    Posted by Karsten at 15:00 | Comments (0) | TrackBack
  • [JavaPolis2007] - Day 1 - Seam in action - Part1

    In this talk Peter Muir, who is a Seam committer, gave a quick intro to JSF, EJB3, Seam and JBoss Tools.
    Since many people knew already about JSF and EJB3 Peter only quickly introduced JSF and EJB with an example app, highlighting already some of the drawbacks of the plain usage of these technologies. Nice way to introduce Seam ;)
    After that he showed how Seam makes life easier to use JSF and EJB3 as well as some further features.
    Seam adds more scopes to the already familiar ones like event, session and application, which are page, conversation and business process.
    It opens your Domain Model to be used via EL.
    Enables Bijection wit @In and @Out annotations, so the objects get injected before and stored after the call to the method.
    PersistenceContext flushes not on every method leaving this to the developer on when he want to (which makes cancels much easier).
    Validation is put into one single place, and the used Hibernate validators, which is also usable with another JPA implementation like Toplink.
    Finally he showed how to create, deploy and change a Seam application with the JBoss tools.
    The tools nicely integrates nicely into Eclipse and I really liked wizards to create the applications and actions etc. Additionally it provides you with a visual preview which is synchronized with you code and if you click a component in the preview the corresponding source code gets highlighted.
    Another feature which looked great to reduce development time was the hot deploy functionality. It enables not only code replacement within methods, but also the whole class signature could change. I only wonder if this is only possible with JBoss application server or also other webservers.

    Posted by Karsten at 13:30 | Comments (0) | TrackBack


    Javapolis 2007 around the corner

    Javapolis starts tomorrow and I am looking forward to it. Hope it still is as good or even better than two years ago. This time my wife and our little one Jonathan is coming with me, so the evenings are blocked with non technical things ;)
    Hope to meet some of you guys there.

    Posted by Karsten at 00:31 | Comments (0) | TrackBack