The last post of the series (day 1, day 2).
The Gaia satellite and Data Processing by William O’Mullane
The day started with some astronomy. Gaia is another effort for a complete sky survey (like it’s predecessor Hiparcos). It’s a “cheap” mission by ESA which costs “only” 600 Million Euros (most space missions start at 1 Billion). It’s interesting how they keep pushing the limits today. Gaia will orbit L2, 1.5 million km away from Earth (the Moon is only 300’000km away). If something goes wrong, there is no way to fix it (which is why most systems are redundant except for the main mirror, for example). The main camera has 170 CCD chips. A huge effort is taken to determine the exact position of the satellite, it’s rotation speed, precise orientation, the position of the components (like the main camera in relation to the main mirror).
It will generate such an enormous amount of data that most of it will have to be thrown away on the craft before it is downloaded. The data will be available to anyone … anyone who can store a couple of petabytes at least (1 petabyte = 1000 terrabytes).
The mind boggles
Essentials of Testing: The Tools You Need to Know by Bettina Polasek and Marco Cicolini
My topic The talk showed how they selected a couple of tools from all the available ones out there by functionality, how they support and complete each other and how well they are supported. Here is the list they came up with:
- jDepend to know who uses what
- GlassFish as a means to run J2EE tests out- and inside a container
- HtmlUnit for testing web pages outside the browser (faster than Selenium but doesn’t catch all kinds of errors)
- Selenium for testing web pages inside the browser. Slower than HtmlUnit but can test browser specific quirks.
- PMD to keep your code clean.
- FEST stands for “Fixtures for Easy Software Testing” and is a library to make testing more simple. For example, you’ll find code here to test Swing UIs or mock the classes you need outside the scope of your test.
- Mockito, a mocking framework. It takes mocking to the next level with fluent interfaces.
Rapid Application Development with Apache Wicket by Andrew Lombardi
Again a tough one. I’d have loved to attend Using Software Metrics to detect refactorings by Thomas Haug.
Wicket is another web framework for Java. “Why another one?” I hear you wail. Because they all suck? Being an Apache project, Wicket tries to suck less. It’s fully mavenized and builds upon a component framework (the simple ones are built in and you find extensions on wicketstuff.org).
Wicket revolves around the idea that you give it a plain HTML (with almost no extensions) and a piece of Java which connects parts of the HTML with the code so you can simply render your pages from these components.
I’m not 100% sold, yet. Wicket was started around 2005 and has been under the radar most of the time. This can mean that it doesn’t solve all the problems. We’ll see.
Lunch break.
Building DSLs with Eclipse by Peter Friese
I’m a huge fan of code generation. A lot of code that we write is actually pretty repetitive and I really miss my preprocessor from the good old C days. Of course, today, it’s called Model Driven Development and we use XML and model transformation and EMF and the like but still.
Peter showed how to build a small DSL with Eclipse Xtext and generate code with the help of Xpand.
Kids, when you play with DSLs, always remember:
- They should be limited. Don’t build general-purpose programming languages with it. Less is more (less time spent debugging and hair pulling in this case).
- Know what you want to achieve. The tools won’t help you there.
- Know your tools. You can write Towers of Hanoi in SQL but it’s not as much fun as using JavaFX instead.
After the talk, I had a long chat with Peter about DSL debuggers. To make them work, we must have (at least) the following information:
- Position in the input stream
- Which DSL rule was applied
- Which template contributed code
- The state of the session at this time (values of all parameters, etc)
- All user supplied transformations which were applied
- Position in the output stream
Only this huge amount of data will allow us to create meaningful “stack traces” if we want to debug DSL modeling problems.
Spring ROO – A New Level of Enterprise Java Productivity by Eberhard Wolff
I skipped most of the talk because I juggled ideas with Peter about DSL debuggers.
Most of my problems are still there and will be solved by Roo 1.1 (couldn’t find out a release date for that).
My major objection with Roo: It actually generates all the code. With Grails, for example, I get a controller but the class is empty. This makes it obvious where the defaults are being used. Roo, OTOH, copies a whole slew of code and files into your project when you create a new controller. This is code that you don’t know but which you’ll have to maintain.
High Performance File IO: the Perl/Java battle by Daniel Eichhorn and Stefan Rufer
How well does Java fare against Perl when it comes to filtering files if you use NIO? It seems that for big files, say 500MB, Java is just 25% slower which amounts to 24s vs 19s. 24 seconds to process a 500MB file twice isn’t that bad, is it?
Mifos – the Grameen Foundation’s Java-based Microfinance application by Michael Vorburger
Motto: Making the world better one line of code at a time. If you heard about microfinance, this is a software which helps to run it. Next time you find yourself with some time at your hands, how about helping fight poverty and join the Mifos open source project?
Software in the service of handicapped people: Research & Development at Otto Bock by Hans-Willem van Vliet
Along the same lines as Mifos, Otto Bock tries to make the world better by helping disabled people with wheelchairs and prostheses.
It was interesting to hear how complex something like a smart leg is and how much people still want to look like everyone else.
And That’s a Wrap
With that, Jazoon 2010 ended. For me, it wasn’t as exciting as the last three years, mainly because the keynotes were somewhat weak. Well, see you all back in 2011.
Tagged: 2010, DSL, ESA, FEST, Gaia, GlassFish, Hipparcos, HTML, HtmlUnit, J2EE, Jazoon, jDepend, JEE, L2, MDD, Mifos, Mockito, Modelling, NIO, Otto Bock, Perl, PMD, Roo, Selenium, Spring, Testing, Wicket, Xpand, Xtext
