May 9

I just got this in the mail this morning

“The JavaOne conference team has been notified by the San Francisco Department of Public Health about an identified outbreak of a virus in the San Francisco area. Testing is still underway to identify the specific virus in question, but they believe it to be the Norovirus, a common cause of the “stomach flu”, which can cause temporary flu-like symptoms for up to 48 hours. Part of the San Francisco area impacted includes the Moscone Center, the site of the JavaOne conference which is being held this week. We are working with the appropriate San Francisco Department of Public Health and Moscone representatives to mitigate the impact this will have on the conference and steps are being taken overnight to disinfect the facility. We have not received any indication that the show should end early, so will have the full schedule of events on Friday as planned. We hope to see you then.

Please see the attached notification from the Department of Public Health.

For further information, as well as Frequently Asked Questions related to the Norovirus, please visit the San Francisco Department of Public Health website at http://sfcdcp.org/norovirus.cfm

 

Well, that sucks.

May 8

From the Pimp My Build session by the Atlassian guys.

  • Use Ant imports. The imported stuff can check for preconditions and fail cleanly using the <fail unless=”…”> tag.
  • Use macros.
  • Don’t build stuff you don’t need using the <uptodate> task. Use <outofdate> from ant-contrib, which is even better.
  • You can use audio snippets to tell you when you screw it all up :)
  • You can filter messages in builds using the Unix shell to notify you of actually important stuff rather than the standard boiler plate.
  • Don’t be afraid to write tasks - everyone should know how the build works. Don’t be precious about it. If you have repetitive tasks, why not script it?
  • Use scripts. You can embed Javascript directly into your Ant build via a <[CDATA[..]]> block
  • Use conditional tasks (ant-contrib) <if> <then> <else>
  • Don’t do one-off analysis. PMD, Checkstyle and Findbugs can be scripted! I found this to be particularly useful. Much easier to find issues, especially if coupled with continuous integration.
  • Document your build! Ant targets have descriptions. You do it with your code, why not your build artefacts? Use the -target_name convention for private targets.
  • Use continuous integration. This has been an absolute life changing thing for me as a developer.
  • Test in your builds!!! JUnit, TestNG et al.
  • Maven tips:
    • Use a remote repository proxy - caches are good (Apache Archiva). Helps performance and stability - make sure you can run when the net goes down.
    • Create a local repository for private artifacts
    • Local repository for public artifacts - third party Jars or commercial stuff not available in public repositories

Oh yeah, Ivy is good when you aren’t using Maven.

May 7

The nice thing about JavaOne is that if you can’t get into the session that you wanted, the fall-back option probably kicks butt anyway :) Having missed out on the Grails/JFX/Android combo, I had the pleasure of getting the low down on Apache Tuscany, an open source Service Component Architecture(SCA) implementation. Tuscany is really about empowering the domain developer to produce and integrate local and remote services in the same way without caring about the underlying transport details.

Think dependency injection where the services that your class uses being accessible on some remote point in the cloud, and exposed using web services. As far as you are concerned, you use the interface, and let Tuscany take care of the rest. Likewise, if you want to expose your service classes to the cloud, you code up the business logic, and leave Tuscany to weave its magic. Great stuff!

May 5

Well. it’s true what they say about Americans. They like to do things big. I hadn’t had my head around exactly what 15000 people at a conference would look like, but I’m slowly beginning to. Moscone is bloody huge! All this space, and I’m having trouble finding a coffee though :( Thankfully can see folks getting the juice of the bean set up :) The swag is great.

Today’s schedule is all about community stuff, everything from operating systems, tools, tools and languages. Scripting is the flavour of the moment: Groovy, Ruby, Python. I only have a few things of real interest scheduled in today (nice light start compared to tomorrow) - Lightning Talks and JUGs. The unconference looks like it will be the big ticket item for me.

May 1

Despite the fact that is the world’s biggest conference out there, it seems that San Francisco is more than capable of dealing with it. I booked my flights a few weeks back, and have planned to stay with friends, but buying stuff at the last minute is definitely an option since neither cost nor availability seem that big an issue. If you have the nerve to hold out, flights from London can be bought today for £313 (one-stop, I paid around £140 more than that for a direct one), and there are heaps of hotels in the immediate vicinity of the Moscone Center doing really good discounts through sites like hotelclub.com. Good one to keep in mind for future reference.

Apr 24

Everything is finally booked and I am looking forward to hitting the shores of San Francisco next weekend. The lineup looks really good and I’m still having difficulty choosing between the sessions. I will also be at CommunityOne, which looks outstanding for a free event. 14 tracks!? Amazing! Hats must go off to the organizers. The only session that I have firmly fixed is on Java User Groups, but I have no doubt that the rest of the schedule will work itself out with ease.

I hope to be blogging live (ie. unedited notes and opinion) while there, but that all depends on how the laptop batteries manage to hold out. Fingers crossed!

All that and I get to sample Delta Airlines’ world famous hospitality too ;)

Apr 16

I finally got around to booking in onto some of the tech sessions for JavaOne in San Francisco next month. Gasp! The amount of stuff going on is incredible. From new languages on the JVM (Fortress, Scala, JRuby) to SOA, mobility and techniques in app development it’s pretty easy to book up 12 hours a day. My approach, lock in a full programme of stuff that looks good, and turn up if the brain is still functioning. It has taken the better part of an hour to read through the sessions for the Tuesday, so it’s no easy task. I can’t wait. All I have to do is get around to sorting out the minor detail of a flight from London ;)

Mar 20

Isn’t it always the way, when you want to blog other stuff comes up? I had intended to write up a final post about the last day of Tech Days, but the weather has been great to get the kite out and the holiday is winding down so…

Day 3 was pretty cool, as I went to a few tech sessions related to stuff that I don’t normally work with, as I do web apps most of the time. The Netbeans sessions were pretty good, with a great demo of the Matisse GUI Builder. I think that with Netbeans 6, Java has finally got it’s answer to the VB/Delphi mode of development. The introduction of the Swing Application Framework (JSR 296) and Beans Binding (JSR 295), really takes away a lot of the grunt work in building small to mid sized desktop apps, and Netbeans does a great job in hiding a lot of the initial application setup code. It’s really nice stuff, and to be honest it really drops the barrier to entry. At some stage you will inevitably need to get into the bowels of Swing, but Matisse gives you a great leg up and means that the learning curve can be that little bit easier. The fact that basic CRUD type applications are pretty well automatically generated is a huge help and lets you get down to doing the interesting bits.

I had the pleasure afterwards to turn up to Jim Weaver’s presentation on Java FX that give a great overview of how the technology worked from an architectural perspective. The user interface is defined using FX Script, which has a weird nested CSS-ish feel to it and is used to define your interface, event handlers and UI transitions. This is then compiled down to a Java app. The apps themselves are distrubuted either as applets (remember those?) or via Webstar/JNLP and talk to the home server via JSON invocations, which means that anything can support the interface on the server side. It would be cool to have a play with sticking a Grails app on the back. Nifty stuff.

The last session was no less interesting, as I am finally getting my head around this ESB stuff! I’ve always found the concept a bit esoteric, not having worked in an environment that uses a bus and it’s not something that lends itself easily to kicking the tires. SOA initiatives that I have worked on in the past involved point to point hooks, but I can really see why the ESB concept might come in handy. It’s very easy to get bamboozled by talk of federation, mediation and orchestration. Essentially the idea is pretty simple - hook up everything to a massive pipe, define standard messages and worry only about communication with the pipe itself. The devil, as in any such thing, is in the details - but essentially the pipe handles things like transactionality, message delivery, data transformation, enrichment, routing and the like through underlying mechanisms. You need to understand how to use the specific pipe in question, as with any such piece of infrastructure, but the payoff looks really good. I have not yet come across a decent guide in layman’s english (not a marketecture white paper) as to how to get everything humming, but I feel like the pieces are falling into place.

Winding down the Australia trip this week for my migration to London. Back to reality - CVs, agents, company setups, finding apartments and poms ;) All I have to deal with is a flood of contractors on the market because of the sub-prime debacle (wasn’t Basel2 supposed to make sure this nonsense wouldn’t happen?) and the April budget rounds. Bring it on!

Mar 5

Beautiful day in Sydney.

I came out of this morning’s Tech Days session on Java ME applications with a whole bunch of questions - they’re much more fun than answers.

The latest version of JME now contains heaps of APIs for everything from geolocation to bluetooth and is supported by millions of mobiles, and will continue to be so. The implementations are open sourced through phoneME (CDLC) and phoneME advanced (CDC). Anyone who has played with Java ME will soon realise that building apps is a real pain in the ass as every device supports different versions.

Now the Open Handset Alliance led by Google comes along with Android derived from Java but a different platform altogether, even though some of the java.lang libraries are supported. It lauds a bunch of features like geolocation and bluetooth (which are already part of JavaME). There’s a lot of feel-good talk about openness and freedom.

To me it seems that it only compounds the platform/version fragmentation issue and will become a problem to application developers who try to reach the largest possible market. This was an obvious concern at question time. People don’t know which horse to back here when starting out in mobile development. Chances are that app developers are having a bigger problem. Is this another HD-DVD/BlueRay scenario?

What features does Android provide that JavaME does not? On the surface to the casual observer they are almost the same.

But the big question here is why is OHA/Google going against the grain and building their own mobile platform?

Java ME use is still growing and expanding to new embedded devices like Sun Spots. Companies don’t invest millions on technology just for the fun of it. Technology uptake is painfully slow in the wild and even if every vendor dropped JME today in favour of Android, it would take years for it to get a majority of market share. Having said that, it may not be that Android’s end goal is mobile product or technology specific at all. Are Google et al attempting to force licensing change from Sun? Maybe Android set top boxes? It looks like a stepping stone that is part of a larger strategy.

Food for thought - the best thing to come out of conferences.

Mar 4

After half an hour of walking around trying to determine where exactly the convention centre IS in the Olympic complex (signage would be really nice), I finally managed to make it to the Melbourne satellite event of the Australian leg of Sun Tech Days. I love events like this; the interchange of ideas and pointers in new unexplored directions really get the mental juices flowing. I was a bit late, but still managed to catch most of James Gosling’s keynote.

The highlights for me were many, and they’re going to take some digesting.

James destroyed the “Java is slow” myth (anyone who still believes this hasn’t fired up a new JVM lately). Java runtimes are incredibly optimized with test results showing performance equalling or beating C/C++ equivalents.

  • Linpack -2%

  • Scimark + 4%

with GC being a lot faster than malloc/free.

The reason why dynamic compilation beats its static equivalent as the JVM is able to tweak performance depending on the processor type being used, even in the same type of architecture. This enables the JVM to take advantage of the strengths of AMD chips over Intel and vice versa.

There are lots of good things coming up in Java 7, both in the core and on the mobile. I will be detailing them a bit more once I get around to working out what all of the JSR numbers I scribbled down meant :P. Too fast with the old Powerpoint.

The question of RAD tools came up. James quantified it with a question – what exactly do you mean by rapid? Is it time to demo or time to production deployment? I had never really thought about this, but it does make sense. Java is being focussed on time to production. The reason for this blew my mind. Venture capital provides funding in 3 month lots only. In that time you need to turn an idea into a production grade system.

3 months from idea to production.

As developers we need to scout out the enabling technologies behind this kind of turnaround and work it into the toolbox. And enterprises need to have a good hard think about why they are not achieving similar results (and no, the answer is not to kill your programmers with 120 hour weeks to do it). This only highlights the discrepancy between small startups and large organizations. I have yet to see anything get put in production in less than a year in a large institution.

The other highlight for me was not what was presented, but rather what could be gleaned from the feedback questionnaire. This was one of those basic “who are you, what do you do and what are you using to do it?” numbers. It listed a whole bunch of technologies that Sun are presumably keeping their eyes on. The stand-outs? RoR, Groovy, Grails and Wicket. If you want to skill up on what’s going to be big on the job boards within the near future, these would be a very good start.

The things I’m looking forward to playing with as a result of this morning? JMaki – a super-framework and Netbeans plugin that glues of all the best AJAX frameworks together (mash-ups faster than you can say Dojo), and of course JavaFX – super sweet user interfaces done as simply as a web page.

Oh yeah, and watch out for an announcement in the very, very near future about PHP and its relationship to Java.

Tomorrow in Sydney!

« Previous Entries