Spring Roo
I attended the session entitled "Extreme Java Productivity: Enterprise Applications in Just Minutes", which is just a fancy session name for the presentation of Spring Roo. What is Roo? In short, Roo is a Rapid Application Development tool that allows you to start a typical webapp project from scratch, add things like database, entities, etc. and end up with web user interface to manipulate that info. There are two main ways to use Roo: through a shell interface, or through the SpringSource Tool Suite. Either way, all is done through shell commands that lets you generate code. It is said to be easy to use and extensible, and the code is only affected at development time. There's no runtime changes or anything like that.
It supports many of the Java APIs, like Java Bean Validation, JDBC, Transactional APIs, several JPA implementations like Hibernate, Apache OpenJPA, Google App Engine, etc. Roo is a "hybrid" code generation, which means that does passive generation at the start to automatically create source code from commands, but it also maintains the code in sync through active generation. The code itself tries to be as much non-attached to Roo as it can be, and there are ways to strip out all the Roo-specific parts from your final code once you're ready to go to production.
I saw the demo for Roo and I must say it looks pretty cool. He created a new project, assigned the database and persistence framework, added some entities and properties and deployed to an embedded web server. It all went pretty smoothly, except for a small IDE crash at the middle of the demo, but that's how demos are supposed to go, isn't it?
It supports many of the Java APIs, like Java Bean Validation, JDBC, Transactional APIs, several JPA implementations like Hibernate, Apache OpenJPA, Google App Engine, etc. Roo is a "hybrid" code generation, which means that does passive generation at the start to automatically create source code from commands, but it also maintains the code in sync through active generation. The code itself tries to be as much non-attached to Roo as it can be, and there are ways to strip out all the Roo-specific parts from your final code once you're ready to go to production.
I saw the demo for Roo and I must say it looks pretty cool. He created a new project, assigned the database and persistence framework, added some entities and properties and deployed to an embedded web server. It all went pretty smoothly, except for a small IDE crash at the middle of the demo, but that's how demos are supposed to go, isn't it?
JDK 7 and Java SE 7 session
Mark Reinhold just finished his presentation that describes what lies ahead for Java 7. He divided the new features in 5 topics: Productivity, Performance, Universality, Modularity Integration, Serviceability.
In the Productivity area, we should expect to see new features like simplified Generics, which allows for easier code writing by not having to repeat the generic part both in the declaration of the variable and in the instantiation of the object. There's also the new try syntax for using resources, which allows you to declare temporal resources that need to be closed after the try block is done.
In the performance area, there are several things that come for the new version, which include the Fork/Join Framework, in which you can take a long running process and divide it in several threads, which is done automatically by the framework. Also, they introduced the concept of Lambda expressions, which is Java's way of implementing closures, combined with default methods for Interface declarations to allow for the expressions simplification. They also introduced the concept of reification, value classes and the long awaited properties.
In the universality arena, they introduced a new project, DaVinci, which will allow first-class architectural support for languages other than java, like Ruby and Python.
Modularity integration, which they call Project Jigsaw, is probably one of the coolest features to me, and what they're trying to do is take away the classpath "hell" in which you have to define every single jar on the command line, and instead you create modules, and use a special module definition language where you specify the dependencies. New tools are introduced for this, jpkg which creates modules, and jmod, which allows for the management of the modules. When you create a new module, you install it in a local repository. As for the dependencies, you can add external module repositories so that the dependencies are downloaded and installed automatically. They even integrate with Maven, which is great because there are already lots of resources in the different maven repositories. There's also a new package format, jmod, which is supposed to be better for compressing java class files, and they will even support the generation of rpm (one of Linux package formats) natively.
Finally, in the Serviceability area, they mentioned something called JVM Convergence, in which they want to extend the concept of a jvm make it a black box, which means you will be running a virtual machine that might be composed of one or more real machines in the background.
As for the release schedule, it seems like they are going with plan B. In case you didn't know, Mark Reinhold commented on his blog the current release schedule and how it was unrealistic. Some of the features have been finished, like Project Coin (in part) , InvokeDynamic (dynamic language support) and Fork/Join Framework and some features that aren't finished like Jigsaw (modules) and Lambda (closures). The idea is to release the completed features mid 2011, and move the rest of them to Java 8, to be released (hopefully) Late 2012.
As an ending note, he mentioned that they will continue with the same Open Source License (GPL v2 with classpath exceptions), and they want more developers to be involved in the process. More information about this can be found at the main JDK 7 site.
In the Productivity area, we should expect to see new features like simplified Generics, which allows for easier code writing by not having to repeat the generic part both in the declaration of the variable and in the instantiation of the object. There's also the new try syntax for using resources, which allows you to declare temporal resources that need to be closed after the try block is done.
In the performance area, there are several things that come for the new version, which include the Fork/Join Framework, in which you can take a long running process and divide it in several threads, which is done automatically by the framework. Also, they introduced the concept of Lambda expressions, which is Java's way of implementing closures, combined with default methods for Interface declarations to allow for the expressions simplification. They also introduced the concept of reification, value classes and the long awaited properties.
In the universality arena, they introduced a new project, DaVinci, which will allow first-class architectural support for languages other than java, like Ruby and Python.
Modularity integration, which they call Project Jigsaw, is probably one of the coolest features to me, and what they're trying to do is take away the classpath "hell" in which you have to define every single jar on the command line, and instead you create modules, and use a special module definition language where you specify the dependencies. New tools are introduced for this, jpkg which creates modules, and jmod, which allows for the management of the modules. When you create a new module, you install it in a local repository. As for the dependencies, you can add external module repositories so that the dependencies are downloaded and installed automatically. They even integrate with Maven, which is great because there are already lots of resources in the different maven repositories. There's also a new package format, jmod, which is supposed to be better for compressing java class files, and they will even support the generation of rpm (one of Linux package formats) natively.
Finally, in the Serviceability area, they mentioned something called JVM Convergence, in which they want to extend the concept of a jvm make it a black box, which means you will be running a virtual machine that might be composed of one or more real machines in the background.
As for the release schedule, it seems like they are going with plan B. In case you didn't know, Mark Reinhold commented on his blog the current release schedule and how it was unrealistic. Some of the features have been finished, like Project Coin (in part) , InvokeDynamic (dynamic language support) and Fork/Join Framework and some features that aren't finished like Jigsaw (modules) and Lambda (closures). The idea is to release the completed features mid 2011, and move the rest of them to Java 8, to be released (hopefully) Late 2012.
As an ending note, he mentioned that they will continue with the same Open Source License (GPL v2 with classpath exceptions), and they want more developers to be involved in the process. More information about this can be found at the main JDK 7 site.
JavaOne Day One: Stuck at the Airport
It is the first day of JavaOne, and I'm sure it is exciting from all the tweets and posts I've seen from other people. Unfortunately for me, my excitement comes in the fact that I have to wait more than 2 hours for my Continental flight, which has been delayed due to the fact that the plane that was supposed to take us to San Francisco encountered some turbulence on the way in, and it was taken out of circulation. Some turbulence that must have been.
And to top if off, I've plugged my Macbook Pro power adapter to several sockets and it doesn't want to charge. I've seen other people connect stuff to the socket, so I don't know. Hopefully it's just the adapter and I can buy one tomorrow at the Apple San Francisco Store.
I am very sad at the moment. Hopefully the trip will get better.
And to top if off, I've plugged my Macbook Pro power adapter to several sockets and it doesn't want to charge. I've seen other people connect stuff to the socket, so I don't know. Hopefully it's just the adapter and I can buy one tomorrow at the Apple San Francisco Store.
I am very sad at the moment. Hopefully the trip will get better.

