Karthik Gurumurthy was at the Silicon Valley Codecamp 2008 to talk about Apache Wicket. Wicket is yet another Java based web framework. Wicket has a real nice separation between markup and code and consists of plain old java and plain old HTML. Unlike the other Java frameworks, Wicket has minimum configuration, zero XML files and no annotations. Even though Wicket is yet another Java based web development framework it does not introduce yet another expression language. Wicket templates are the most designer friendly web development view technology that I have seen, it essence they are pure HTML except for a wicket:id attribute that is added to tags for which you are interested in. The Wicket Java component for a HTML form has the same familiar feel as Swing. You first create a an instance of a Wicket page, then form object and add components to the HTML form elements such as text fields, password fields, etc, just as you would add JComponents to a JPanel.
Wicket is a relatively new framework compared with Struts, Grails, Spring MVC, Tapestry, GWT, WebWork, etc but it is getting traction. Currently there are three books dedicated to web development with Apache Wicket.
Andres Almiray gave a presentation on Java 2D and Groovy at Silicon Valley Codecamp 2008. Andres started the session by highlighting some key benefits of Groovy’s language features. For example, in Groovy setters and getters are explicitly created for you by simply defining a property, semicolons are optional and the return keyword are optional. Parenthesis are optional in many cases. Groovy strings are sexier, known, as GString short for Groovy Strings, and provide string interpolation familiar to Rubyist and Perl programmers. Even return types are optional in many cases and to this Andres said, “the def keyword is like var keyword in JavaScript.” Another highlight of Groovy’s features are closures. Andres said, “We don’t know if we have closures in Java 7, Groovy has closures right now!” After highlighting Groovy language features we where reminded of Groovy’s mantra: Groovy is Java, Java is Groovy.
After introducing Groovy to the audience, Andres demoed GraphicsBuilder. GraphicsBuilder is to Java2D what SwingBuilder is to Swing. The builder pattern is commonly used with great effect in Groovy due to the languages dynamic and reflective nature. GraphicsBuilder can be used to draw basic shapes, those included in Java 2D which is not much, and many more shapes like stars, triangles, balloons, crosses, arrows, donuts, etc. GraphicsBuilder has import and export to SVG via Batik and has partial experimental export to Flash’s SWF format. Andres recreated JavaFX demos simply using Groovy and GraphicsBuilder.
I many 10-5 developers not working directly with ajaxified web 2.0 applications I was not able to go to the Google I/O conference. I don’t feel so bad not going since Google has just released video recordings of over 70+ technical presentations from Google I/0. Most of the technical presentations are pushing Google’s APIs such as Android, Google App Engine, GWT, and Open Social.
As an aid for myself, and maybe other GWT developers, I have organized the pertinent GWT presentations as follows…
Surprisingly Rockin’ JavaScript and DOM Programming in GWT
You may already know about GWT’s nifty JavaScript Native Interface (JSNI), which allows you to define native Java methods with handwritten JavaScript. In GWT 1.5, there’s an even more powerful way to program close to the metal. You can now model arbitrary JavaScript types directly as Java classes (specifically, as subclasses of GWT’s JavaScriptObject class), yet there is no overhead in size or speed. You can code against any JavaScript object as if it were a regular old Java object. So, what does that buy you?
I many 10-5 developers not working directly with ajaxified web 2.0 applications I was not able to go to the Google I/O conference. I don’t feel so bad not going since Google has just released video recordings of over 70+ technical presentations from Google I/0. Most of the technical presentations are pushing Google’s APIs such as Android, Google App Engine, GWT, and Open Social.
As an aid for myself, and maybe other Open Social developers, I have organized the pertinent Open Social presentations as follows…
Meet the OpenSocial Containers
Representatives from current OpenSocial containers give an overview of their implementations, policies, and what’s unique about their container. They also share some of the fruits of their labors including high level stats. Team members from upcoming containers review their planned launches, policies, and timelines.
I many 10-5 developers not working directly with ajaxified web 2.0 applications I was not able to go to the Google I/O conference. I don’t feel so bad not going since Google has just released video recordings of over 70+ technical presentations from Google I/0. Most of the technical presentations are pushing Google’s APIs such as Android, Google App Engine, GWT, and Open Social.
As an aid for myself, and maybe other Android developers, I have organized the pertinent Android presentations as follows…
An Introduction to Android
Android is the Open Handset Alliance’s mobile software platform. Come learn about Android and our vision for more open, powerful, and useful mobile devices.
I just migrated a 4,000+ Java class project from Java 1.4.2 to Java 6. I’ve already mentioned some of the issues to be aware of when migrating a large code base to Java 6. In Java 6, enum is a reserved keyword so I had to renaming variables that had that name, I also had to upgrade to a more recent version of Apache Commons Lang for a similar reason. I also had minor issues compilation issues, such as the removal of compareTo(Object obj) method was removed from the String class, and Apache classes that once shipped with the JRE 1.4.2 where removed.
But what irked me the most about Java 6 was recent changes to JDBC 4.0. The ResultSet interface, in Java 6, has 197 methods that need be be implemented if you are working with custom ResultSet implementation. I am just shocked at the sheer number of methods required for a basic ResultSet, most of which are not used, or will ever be used by our custom implementation! This is what is wrong with Java. The good thing is that Eclipse auto code generation features saved me from typing all of those methods but I wished there was a basic ‘do nothing’ abstract adapter like WindowAdapter.