Archive for the “Opinion” Category


MySQL is going to integrate some code from Google customizations. That is extremely good and healthy, however I came across a paragraph that made me wonder if MySQL will ever stop being insane at times…

Oracle having acquired the vendor of MySQL main data storage subsystem (InnoDB), the company decided to write a new one called Falcon. This is a safe move as it could potentially threaten MySQL if Oracle decided not to play nice anymore regarding InnoDB.

However… read this:

Falcon will do crash recovery and roll-back operations faster than InnoDB because they are done from main memory, Schumacher said, but some InnoDB features, like foreign key support and full-text indexing, won’t be supported until MySQL 6.1.

Come on! How can you pretend making an enterprise-grade RDBMS and not support foreign keys? Just remember that MySQL only started to support them in version 5… I think I’ll never understand why MySQL is so bitchy about foreign keys while any other RDBMS just provides it (PostgreSQL, Firebird or Derby just do it right).

If you don’t have basic referential integrity, then please don’t call it a RDBMS: just call it a “table-based database” with SQL support.

Comments No Comments »

I had always wondered why on earth we had to add the -Xmx256m flag to the JVM to launch the Glassfish installer…

glassfish-installer-jarcontent

It’s as simple as that: everything is packed inside one class file which contains the installer code as well as the data.

Is there any good reason for doing so? I would find it more intuitive to have at least the data separated from the installer classes, so that it could be launched graphically (Windows, Mac OS X) or even from a terminal… using only java -jar glassfish-installer-XXX.jar.

(Just for the sake of clarity, I don’t care that Glassfish is not using IzPack :-) )

Comments No Comments »

Following this post and this other one, I am now exploring the Java integrated development environments, still with JavaEE teaching purposes in mind.

I will briefly review Eclipse, Netbeans … and IntelliJ IDEA (yes, it is not opensource, but they give free classroom licenses).

Disclaimer #1: most of the things I say here are based on personal taste and experience. Hence, my opinion is highly biased. Also, there is nothing scientific in the claims that I make. You have been warned :-)

Disclaimer #2: the logos used in this entry are copyright / trademark / deposit / bla bla bla their respective owners bla bla bla used without asking their permissions bla bla bla and I don’t care bla bla bla…

Eclipse

Quite frankly I have been a supporter of Eclipse for quite some time. Yet, I am getting more and more disappointed by the project evolution. Sorry but I have to be quite harsh:

  • Eclipse is now a decent Java development IDE, but definitely not amazing anymore (just an example: everybody has powerful refactorings now).
  • SWT still looks awkward on a Mac.
  • WTP provides the very bare minimum for JavaEE / web development. Really. For instance it won’t help you writing a JPA persistence.xml. Dali is buggy and honestly a bit useless. I guess everything works fine if you buy the IBM RAD stack, but meanwhile WTP feels unpolished.
  • Setting up a working environment (application servers, frameworks, …) takes time. It’s not straightforward. The whole experience is painful.
  • … I could say more but I will definitely stop there.

I hope the situation on Eclipse improves some day, but the fact is that Eclipse is now “just good enough”, but not the shinny IDE it used to be. It has a very good platform though, and writing tools as Eclipse plug-ins is still a very appealing choice (BTW it’s how we write our research prototypes). I guess that you need to invest money on IBM RAD or another packaging if you want to get a pleasant experience with minimal set-up and a good assistance… all of this out of the box.

Netbeans

I have been using the various releases of Netbeans for teaching over the past 2 years. Netbeans is brilliant in providing an out of the box experience: everything is there… and it just works. The IDE has been getting stronger and stronger over the releases. Last but not least: it is gorgeous on a Mac as the developers put some efforts on having a Swing L&F that blends well.

Students generally appreciate the fact that they can have a working JavaEE development environment in just a few clicks. Most wizards and default settings just make sense. We have still been plagued by some major problems in our labs: random freezes and crashes, projects that cannot be easily transferred to other machines (requiring the creation of new projects) and failures due to InstallShield that would silently not install Glassfish (a widely known bug). Good news: Netbeans 6 won’t apparently ship using this Install-biiiip crap (just kidding of course) :-)

I have been hugely impressed by the current betas of Netbeans 6. This release will be just amazing: go download it and figure out by yourself! It makes Eclipse look like it had been released 5 years ago. In terms of tooling and developer assistance, it is closing the gaps on IntelliJ IDEA. Sun has put some efforts on its Java IDE and it is really paying off: expect more and more migrations from Eclipse to Netbeans from shops where Eclipse was just used as an IDE and not as a platform for building applications. I cannot even believe anymore that Netbeans 3 has existed…

IntelliJ IDEA

I have been using this IDE for 2 years thanks to the opensource license scheme that supports projects like IzPack. IntelliJ IDEA clearly targets the experienced Java developers. It feels more like a powerful toolbox than a traditional IDE.

What is amazing with IntelliJ IDEA is how simple it integrates with various application servers, frameworks and libraries. The whole experience is straightforward. With Netbeans you get a ready-to-use package while with IntelliJ IDEA you don’t get that — but you will quickly create your own environment.

The upcoming version 7 is a good step forward compared to version 6, and the JavaEE support is much better, especially when using JavaEE 5. If you still doubt about this IDE, I suggest that you Google for reviews and blog articles regarding its merits and how it changed the life of so many developers ;-) . The fact that it is both powerful yet very intuitive makes it a good choice for teaching purposes.

Verdict

My choice is still open as I have a week or two to make my mind. Clearly I won’t choose Eclipse. For my teaching purpose, Netbeans 6 and IntelliJ IDEA are both as good in terms of features and experience. Netbeans 6 is appealing, but the current betas are quite resource demanding… and we don’t have much RAM (and I forgot to say that those machines run Oracle instances…). I found IntelliJ IDEA to be nice on resources, making it probably a better fit with regard to this constraint. I have been in touch with Jetbrains to get classrooms licenses and I am still waiting for their decision.

Do not hesitate to share your own experiences regarding development environments for JavaEE teaching! You may also have an opposite view (especially on Eclipse) so don’t hesitate to launch a flamewar with me :-)

Update: I will use IntelliJ IDEA ;-) (still, Netbeans 6 will rock!)

Comments No Comments »

As promised in this previous post, I will start this short serie by the JavaEE application servers jungle. As a side-effect I won’t consider Tomcat as it is not a full-stack application server. Also, I will only consider the opensource JavaEE servers.

JBoss

JBoss is an obvious option when it comes to JavaEE application servers. In fact, it delivers very well. I found the JBoss application server to be very easy to use. The documentation is good. You quickly forget that you are running it once your favorite IDE has been set-up. Also, the startup time is pretty fast (in fact, JBoss is the fastest that I have tested).

Of course JBoss is not perfect. There is not proper web administration console. Adding new resources (e.g., a new JDBC datasource pool) needs to be done by hand. This involves editing a few XML files and getting used to the files locations. There is nothing complicated in this though: it is just a matter of reading a bit of documentation and copying/editing sample files. This is yet not the simplest for teaching purposes. Apart from that, I like this application server a lot, and I encourage you to check out their impressive suite of middleware solutions.

JOnAS

I have not tested it as the stable releases are only JavaEE 1.4 certified.

Apache Geronimo

At first sight, I thought that Apache Geronimo would be roughly a JBoss clone. I was so wrong!

Geronimo is a pleasure to work with. The IDE support is very good (Eclipse, IntelliJ IDEA). It comes with a very good documentation. Last but not least, it has the best web admin console I have seen. You can do pretty much anything from there. For example, you can add JDBC datasource pools with a very intuitive wizard and Geronimo will download the drivers for you… or provide you with a link when some legal restrictions apply. You can also opt for Tomcat or Jetty as your servlets container which is very nice (to me, Jetty is superior by far to Tomcat…).

I was very impressed with Geronimo, yet I won’t use if for teaching purposes. The startup is a bit slow: I suspect that the GBeans framework (IoC) flexibility price is some CPU time. But my main complain is related to OpenEJB, the EJB container that is used by Geronimo. For some (biiiip)king reason, I could never manage to retrieve a remote session bean through JNDI from a standalone Java application… The lookup would always fail and I have really no idea why… This was never a problem with both JBoss and Glassfish (using the same application of course).

Glassfish

This is my choice :-)

Glassfish is the reference JavaEE implementation and it is pretty slick. The documentation is excellent as well as the IDE support (although IntelliJ IDEA 7 run console always gets disconnected from the server, which is a bit annoying). The administration console is very good, yet a bit less powerful than the one of Geronimo. The startup time is ok.

I also enjoy the fact that Glassfish supports multiple independent domains (i.e., domains are like Oracle instances). This is a must-have feature for labs as pair of students can have their own domains instead of having to reuse a (possibly broken!) one that was left from a previous lab session. The command-line asadmin tool is just great and it is very easy to manage instances, deploy applications, backup or restore domains and so on. The future Glassfish v3 is probably going to be highly attractive as it will support some nice features such as the direct deployment of RoR applications using JRuby.

Verdict

Glassfish wins by a narrow margin over Geronimo (stupid OpenEJB!). I won’t use JBoss for my teaching, not because of flaws but mostly because it lacks a proper administration console. Overall, Glassfish provides the most straightforward application server experience. It also looks to have a very bright future with the upcoming version 3 ;-)

Update: I have nearly launched a troll :-)

Comments 14 Comments »

Bonne nouvelle, je ne suis pas le seul à penser que l’aéroport Charles de Gaulle est une mauvaise vitrine pour notre pays. Cet aéroport n’est pas fonctionnel, il est profondémment sale et en plus l’accueil des passagers par les autorités est infecte (ni bonjour, ni sourire, ni merde). Pour avoir fait quelques aéroports internationaux (Sydney, Hong-Kong, Londres, Amsterdam, Singapore, Bangkok), je pense pouvoir affirmer combien notre plus gros aéroport est ignoble (quoique … Londres Heathrow n’est pas franchement mieux …).

Extraits choisis (j’ai mis en gras ce qui rejoint mon expérience personnelle) :

Lors de l’arrivée à San Francisco, les couloirs sont larges, propres, bien tenus. Les toilettes sont facilement trouvables, propres et nettoyées. Il y a du papier. PQ et papier pour les mains. Il y a suffisemment d’officiers d’immigration (un peu leur police des frontières à eux) pour accueillir simultanément trois 747. Il y a trois files avec plusieurs guichets chacune. Une pour les citoyens US et résidents. Une pour les visiteurs non américains. Une pour les immigrants. C’est bien fait, bien organisé, la salle est LARGE. Les bagages arrivent vite. La salle de contrôle de douane est grande, sérieuse. On vous contrôle sans vous prendre pour un connard ni vous regarder comme une merde.

Arrivée au dit-contrôle par des couloirs tout petits et sans toilettes. DEUX officiers de la PAF en tout. Un monde fou, un avion de Russes vient d’atterrir.

Douanier patibulaire voire grossier.

Je crois que mon meilleur souvenir de CDG restera quand même mon dernier départ pour Sydney, retardé faute à un bagage à faire exploser. Le CRS qui était dans la salle d’embarquement nous a parlé comme à des bestiaux (en même temps il est CRS, donc il a un QI de moineau tombé du nid). A un moment j’ai “osé” le regarder et il a mis sa main sur son flingue, prêt à dégainer … :-)

Comments No Comments »