• Home
  • About
  • Sample Apps
  • Videos
  • Significant Software Development Developments 2009

    January 14th, 2010

    Recently, Dustin Marx postet his top ten of the most “Software Development Developments of 2009“. Here is a short summary as a basis for further discussion:

    Mergers and AcquisitionsSpringSource acquiring Cloud Foundry, SpringSource itself being acquired by VMware; Oracle’s acquisition of Virtual Iron and GoldenGate, Microsoft’s acquiring of Interactive Supercomputing, Google’s acquisitions of companies such as reCAPTCHA and Teracent, etc.

    Changing Landscape of Software Development ConferencesColorado Software Summit and SDWest and SD Best Practices terminated their long-running tradition in 2009. There is speculation that JavaOne 2009 may have been the last.

    Java IDE WarsIntelliJ IDEA has been the only one of the four leading Java IDEs that has not been available without charge. In 2009, the availability of an open source community edition of IntelliJ IDEA potentially changed the Java IDE landscape.

    Groovy: Groovy claims to be “the most popular and successful dynamic language for the JVM”. According to Marx, this certainly seems to be the case (he mentions the high number of books on Groovy (and Grails) and the existence of a DZone area dedicated to Groovy (Groovy Zone) for evidence.

    Java EE 6: Marx defines the December release of Java EE 6 as a significant development in the enterprise space.

    Oracle buys Sun: According to Marx, even developers who do not use Sun or Oracle products are likely to be at least indirectly affected by this acquisition because it will almost certainly affect the entire software development competitive landscape.


    Also included in the ranking were topics as:

    • Programming Environments for Mobile Devices
    • Bing Search Engine
    • Scala
    • Java SE 7 News
    • Cloud Computing
    • Google Chrome OS

    If you are interested in Marx’ full review of 2009, please read his blog entry at JW Blogs. He also cited other annual reviews from JavaLobby and ComputerworldSo what are last year’s most significant developments in software development from your point of view?


    Jazoon 2009

    June 12th, 2009

    At the Jazoon, the international conference on Java technology (Zurich, June 23-25), James Gosling, the father of the Java programming language, will deliver the opening Keynote. So if you missed JavaOne this year, just attend Jazoon’09 and benefit from inside information and updates, but also get latest news about the future of Java. 

    Besides James Gosling, Jazoon’09 features many other interesting speakers from the Java world including Neal Ford, Ivar Jacobson, Adrian Colyer and Danny Coward. As a special guest we are pleased to announce Linda Cureton, CIO of the National Aeronautics and Space Administration (NASA) Goddard Space Flight Center in the USA. She will deliver the Jazoon’09 closing Keynote.

    Moreover, as the first developer conference in Europe, Jazoon’09 launched a competition for young speakers aged 26 and under. Out of the several dozen submissions, an expert jury has selected the three most promising. The finalists of the Canoo sponsored “Jazoon Rookie 2009” are:

    João Arthur Brunet Monteiro - Brazil
    Bettina Polasek - Hungary
    Deni Lukmanul Hakim - Indonesia

    On 24 June 2009, the conference audience and the jury will vote on the winner. Canoo is very exited to be involved in such an event, as the contest is an opportunity for creative minds under the age of 26 to present their ideas to a broad public of experts. Facing the present shortage of skilled IT specialists, it was an obvious decision for Canoo to actively support the advancement of young professionals and new ideas. 

     


    J1 2009: Grails Podcast Live with Dierk König

    June 9th, 2009

     

    CGUG was at the first ever live Grails Podcast event during JavaOne 2009 in San Francisco, CA. This was the first time Sven Haiges and Glen Smith have ever broadcasted from the same location in front of a live audience. Panelists included Canoo Fellow Dierk König, Scott Davis, Andres Almiray, Danno Ferrin and James Williams. 

     

     


    J1 – Final Remarks

    June 6th, 2009

    This conference was different in several respects. First of all, Oracle’s takeover of Sun is certainly a watershed and it remains to be seen how Oracle will drive the Java ecosystem. Larry Ellison’s appearance at the keynote was a strong and desperately needed signal for the Java community. At next year’s JavaOne it should be clearer how serious Oracle is about Java.

    Another difference was the comparatively small number of attendants. I cannot remember a JavaOne with plenty of space in the session halls (they even had tables in some of them which was convenient for laptop users) and short lines at the entrance, at lunch or at the restrooms. And for the first time ever at JavaOne the wireless network was kind of usable and mostly reliable. The quality of the talks was pretty good, though. This impression was also corroborated by other people I spoke to. Only two talks did not meet my expectations in terms of presentation and content.

    The two main topics were certainly JavaFX and mobility. JavaFX is Sun’s last bet to seize the desktop and RIA realm. Right now, they are trying to impress the designers but they have to address the needs of hard-core Java developers as well. It is still too early to tell but it will be a tough uphill battle for sure. Mobility has been a main topic for the last few years. However, the iPhone has definitely changed the landscape, especially in terms of usability and JavaFX Mobile is not yet there.

    Who were the prominent absentees? Android was almost never mentioned. Sun is obviously still not sure whether to ignore or fight it. Ignorance may be bliss but I think it is not the right approach here. I also never heard anything about portals (with the notable exception of iGoogle, which has nothing to do with JSR168). Looks like this technology did not catch on and will remain in its niche.

    One final remark: if Sun is really serious about Rich Internet Applications and JavaFX then they should come up with a vastly better JavaOne schedule builder. The current Web application is lightyears away from being usable and only serves as a bad example.


    J1 Session Blog: Last sessions

    June 6th, 2009
    JavaOne is winding down and I am in for a last round of sessions. Three of them were worth to blog about:

    Building Next-Gen Web Applications with the Spring 3.0 Web Stack
    Keith Donald and Jeremy Grelle from Spring Source talked about building Web applications with the Spring 3.0 Web stack. The goal of this Web stack is threefold: provide a unified programming model, support multiple client types (e.g. classic Web, AJAX, Flex), and be adaptable for different use cases. The basis of the Web stack are the Spring Framework and Spring MVC. Who would have thought otherwise? Restfulness is the service type in vogue and therefore this is now the preferred controller model in Spring MVC. The support for different client types is quite impressive. Spring invokes the appropriate content creation code based on the client. The server-side code looks pretty clean (if Web application code can look clean at all…). With Spring 3.0 support for AJAX is extended, but they are still conservative with JavaScript. Their approach is to decorate HTML elements with rich behavior. The decoration is optional and the user interface still works with JavaScript turn off. It is even possible to add client-side validation and the code for that is generated based on the server-side model meta data. As a summary, both presenters were excellent and within an hour I got a very good overview on the upcoming Spring Web stack.

    Introduction to Google Guice: Programming is fun again!
    The next talk was excellent as well and gave a concise introduction in Guice. The presenter mainly focused on dependency injection and how this can help to modularize your Java code. The factory design pattern is well known and is intended to vary object creation. However, it does not solve the dependency issue and requires additional effort for testability. Guice is really convincing in this area. By means of annotations and a clever API which almost feels like a domain specific language one can mange dependencies way better than with factories (and with less boilerplate code too). I especially liked their approach of a mostly programmatic approach (rather than trying to coerce annotations into a programming language). There is no XML, only a few annotations and everything else is done programmatically. The speaker emphasized that Google prefers Java code over XML. Guice even allows to configure servlets programmatically rather than having a huge XML file. Scoping is another nice feature of Guice. A scope defines the life cycle of an object, such as a singleton which is created only once and reused thereafter. On the server side the scope may also be request- or session based. Injected objects  can be decorated with method interceptors for aspect oriented programming. All facilities of Guice are exposed via an API which is great for tool developers. Guice works both in Java SE and Java EE, in Android, Google App Engine, and even in GWT (via GIN). They also announced their support of Java modularity which comes with Java 7. Guice looks like a great alternative to other dependency injection frameworks such as Spring or Pico.

    Building Enterprise Java Technology Based Web Apps with Google Open-Source Technology
    The last session I attended was about Google development infrastructure too, given by Dhanji R. Prasanna who is one of the core engineers of Google Wave. Java is really at the core of Google development. Two of the main advantages of Java for Google are type safety and developer scalability. Type safety is important because it allows to reason about program behavior and this is crucial for horizontal scalability. For example, the scalability of the Google App Engine depends on this. Developer scalability is also a top priority for Google. Their experience with JavaScript is that it does not scale at development time at all. The overhead to develop with JavaScript in a team of developers is prohibitive, since it does not have the means to create solutions that are sustainable in the long term.
    Dhanji started the talk with Guice which was kind of a summary of the previous talk. I was slightly amused about the slogan he used for Guice: Vitamin C for your app! Then he explained how they used GWT (pronounced gwit and not g-w-t) for the iGoogle portal. Only the combination of Guice (resp. GIN) and GWT can achieve both flexibility and scalability. However, I found their notion of MVC pretty strange. The view cares only about visual aspects, which of course makes sense. The controller captures the presentation logic and the model communicates with the server. Now here comes the catch: the controller dependes both on the view and the model. hence, if they run unit testing for the controller they have to replace the view with a mockup view (using dependency injection with Guice). A presentation model would be way more convenient since it has no dependency on the view whatsoever.
    Google has also developed an infrastructure for functional (acceptance) testing of Web applications, called Web Driver. It is purely Java based (he argued that Google developers don’t like to learn yet another XML dialect) and it comes with browser plugins for IE, Firefox and Safari. Hence, they can achieve very fast DOM interaction and asynchronicity is well hidden from the test case developer.
    The last puzzle piece is called Sitebricks. This was kind of an official announcement and it will be available publicly in the near future. Sitebricks is a RESTful web framework for Java. He emphasized two properties: speed and statically typed templates. Yet again another example how important static typing is to Google.
    Bottom line: excellent speaker and convincing presentation.

    J1: Geeks, Toys, and Duke Awards

    June 5th, 2009
    The Friday keynote is always dedicated to geeks, toys, and Duke awards. As usual, the host was James Gosling and there were a few presentations worth to mention.
    First, we got another demo of the JavaFX Authoring Tool.  It is still in its early stages but it already looks quite impressive. I especially liked the way the handle different screen resolutions. You work on a master scene and at the same time you see alternate screen resolutions which you can specify. If the default scaling for other resolutions is not good enough you can tweak it such that it overrides the master scene. On the other hand, wiring up events was not so new to me. The NeXT  (and subsequently Mac OS X) user interface builder has had that for a long time.
    There was also a demonstration of a huge NetBeans-based application for monitoring a satellite ground station (more than 1000 modules). On this occasion we learned that James Gosling’s first payed job was developing software on a PDP 8 for satellite monitoring. And a picture of James at the age of 14 in front of a PDP 8 proved that he actually had hair!
    The most impressive demo was about Visuvi. This is a visual search engine, i.e. queries are not submitted as text but as a picture. A trivial example would be that you are standing in front of a painting and would like to know who the painter is. Take a picture of the painting with your mobile phone and submit it to Visuvi. A more interesting application comes from the health care domain. If a physician is looking at a biopsy and is unsure whether the patient has prostate cancer he can use Visuvi. The search engine will deliver similar pictures and the result of the diagnosis of similar pictures.
    The last Duke award was given to a Sun employee who developed the control software for Neil Young’s ‘58 Lincoln. Neil Young had the idea to convert this fuel guzzler into an eco hybrid. The car runs on electric power and the batteries are charged either through a power plug or a generator (using ethanol) which is built into the car. The Lincoln is so big that it is no problem to put in electric transmission, generator, ethanol tank and a huge array of lithium cells. However, it is still questionable whether driving a 3 ton car  is environmentally sound at all.

    J1 Session Blog: Bean Validation: Declare Once, Validate Anywhere — A Reality?

    June 5th, 2009

     

    Writing validation code might sound trivial but it is far from it. If you ever had to deal with validation in a complex application you probably know that there many requirements. Among them are:
    •    Easy specification of simple constraints, such as the min and max length of some string property.
    •    Feasible specification of complex constraints, e.g. validation of an entire object graph with lots of dependencies.
    •    Factorising the constraints: there is a single place in your entire code where you define the constraint, even if you use it across different layers in your architecture and possibly in different languages.
    •    Validation should handle both single properties and entire object graphs.
    •    Flexible creation of validators
    •    Mapping of validation errors to error messages and error aggregation.
    •    Defining the order in which validation is executed
    •    etc.
    Emmanuel Bernard, who is the specification lead of JSR 303, did an excellent presentation on Bean Validation. He gave a comprehensive overview, showed a lot of code examples and also dealt with the finer points of validation. I must admit that almost all aspects of validation have been addressed by this JSR. Constraints are defined by means of annotations. There is quite a number of constraints already available and of course one can add new constraints. It is also possible to specifiy the order of validation or partial validation. Error message handling is pretty flexible: internationalization and value expansion are supported among others. The same holds true for validator creation and configuration.
    Nevertheless, Bean Validation did not convince me. It is not the lack of functionality but how the code looks like. With complex validation there are so many annotations “decorating” the bean that one can hardly see the bean properties. To me it looks a lot like trying to get programmatic with annotations which are declarative by nature. Moreover, validation annotations are probably not the only annotations attached to a property. There might also be annotations for persistence, transactions etc. The code does not look very readable to me and I am missing the appeal of POJOs. A pure programmatic approach which separates bean and validation might be a better alternative.

    Mike’s JavaOne talk entitled “JavaFX in Action: from Design Tool to Desktop to Mobile Device”

    June 5th, 2009

     

    OK I admit it, I was pretty nervous about this one.

    On the face of it my talk today on our experiences with JavaFX appeared to go well, but the truth is it’s always difficult to objectively judge whether a talk is well received.

    A handful of attendees came to me personally to thank me (which is always very rewarding) and a few others came to the Canoo stand whilst I wasn’t there. A touch strange and disappointing, however, was the lack of questions at the end of the session. Experience tells me I didn’t answer all of the questions that could possibly be asked! So why the silence? Was everyone thinking just about lunch? It would be so nice to know!

     

     


    J1 Session Blog: Swing Rocks – A Tribute to Filthy Rich Clients

    June 4th, 2009
    The two speakers (Pär Sikö, Martin Gunnarsson) showed off an RSS reader (Feedjii) built with Swing which looked a lot like the pimped up applications of Romain Guy. They started off  by presenting some real world examples of horribly looking Swing applications. Then they revealed their recipe for cool looking Swing applications: subtle effects, smooth animations, and custom components. For each ingredient they showed how surprisingly easy it is to implement it. They also covered the area of performance and gave a few hints on making a user interface really smooth. For this, developers have to look into: hardware acceleration flags, timing issues, caching images, image compatibility, and avoiding unnecessary transparency. They didn’t have a lot of material to talk about, though, and after 45 min they already started taking questions. Therefore, on the one hand I got confirmation again that one can build very nice user interfaces with Swing and it is not too hard provided a good UI designer is at hand. On the other hand I was slightly disappointed because I was expecting a lot more. BTW, there is a blog about developing Feedjii and it can be found here: http://www.swing-rocks.com/

    J1 Session Blog: Extreme GUI makeover: Hybrid Swing and JavaFX

    June 4th, 2009

    In the past years the Extreme GUI Makeover sessions proved extremely informative, entertaining and popular. Every year I was curious to see whether they were able to keep up to the level of the previous year or even top it. Last year the session showed first signs of wearing out. This year a completely new team (Amy Fowler, Jasper Potts etc) took over from Romain Guy and Chet Haase. With JavaFX being a big topic at this years JavaOne it was quite obvious to use this for the makeover.

    And they did a pretty good job by taking the Swing-based mail application of the 2006 session and employed JavaFX to pimp it up even more. It is obviously not too hard to integrate Swing components into a JavaFX user interface (the other way round is not really feasible). JavaFX is simply the stage and Swing components can be included as a node (after wrapping them into some kind of JavaFX component). However, hooking up the event handlers is fairly cumbersome and does not really scale for complex applications with lots of event handlers.

    One highlight of the session was the address book of the mail application. They used JavaFX and Java2D to give a 3D impression of turning the pages with the mouse. Visually stunning although the user interface is totally impractical for everyday usage.

    The culmination of the session was certainly their idea of junk mail removal. They were using an animation which launched a rocket and on impact the spam mail exploded and disappeared accordingly. Being both funny and pointless this also perfectly illustrated how easy it is to add animation to a Java application and how difficult it will be to enhance productivity of business applications by means of JavaFX.