I recently wrote two blogs. The first, deals with Java/Ubuntu/JBoss/MySQL. The second, deals with Java/Ubuntu/Tomcat/MySQL. This deals with Java/Ubuntu/JBoss/Oracle Express Edition.
Update: I just finished a blog on installing Oracle XE on Ubuntu. It can be found here.
Update: If you want to skip the background and read about the implementation, click here.
What we need is speed! Speed is what we need!
How do you choose among the three stacks? It depends upon your requirements. I like all three. Let’s look at these one by one. The simplest stack to install, configure, develop, maintain is Java/Ubuntu/Tomcat/MySQL. If you’re a novice, this is the way to go. Moreover, there are trends in Java development that promotes speed and agility with light weight frameworks. A lot of small to mid sized projects don’t use EJB’s. They don’t need high availability or clustering. While LAMP is a great solution for these requirements, development managers want the option of Java and all the great frameworks that come with it along with its inherent Object Oriented-ness. Furthermore, as projects get bigger, organizations have the ability to start small (prototyping?) and advance to large implementations using proprietary application servers and/or databases.
The start up time and time to develop on a Tomcat/MySQL stack gives organizations this flexibility, while retaining the ability to use heavier frameworks down the road. This choice is easy the smaller the project you have along with the more junior you are in the Java tech space. So what happens when you want to use EJB’s or more advanced/supported application servers?
Simulating a Mid-Sized Project
Oracle is a robust database. It’s used by big government, corporations of all sizes. They have a virtual monopoly in such industries as banks in certain regions, manufacturing, finances, and even cities. Their dba’s are among the highest paid and the Oracle implementations can be up in the tens of millions. With mysql and postgress nipping at Oracle’s heels, Oracle’s database is available for free-as-in-beer download with restrictions. The Express Edition is only available for 32 bit downloads and the environment as well. That means that the RAM utilization can not be greater than 2 Gigs. The data itself is less than 4 Gigs (features are also limited), while MySQL does not have these requirements.
With the acquisition of Sun Microsystems, Oracle has access to Sun’s JDK. Oracle has also aquired Weblogic, so the inherent application for a true Java/Oracle stack would be Java (Sun’s version), Weblogic, Oracle XE (or non free variants) and Open Solaris, while using Oracle’s JDeveloper as an IDE. In the future, I may release how to implement a free-as-in-beer blog for a full development stack using the Oracle technologies which were just mentioned.
For this particular blog, I will not focus on a full Oracle stack, but a stack that only uses it’s “free” database, Oracle Express Edition. The benefit is the exposure to a highly marketable, highly used, industry leader in database management systems while remaining focused on Java development on the web. This simulates most midsized environments. While a lot of organizations use Oracle as their database, they don’t often use any of the other technologies that Oracle has acquired (that may change in the future, especially if Oracle abandons JDeveloper and either acquire IntelliJ or base the next generation of JDeveloper on Eclipse, which could be a conflict of interest or philosophy, read below).
A Balanced Approach
The balanced approach is using JBoss with MySQL. It’s easy to set up and easy to develop. The documentation available (for free) is incredible and the quality of the documentation is equally as good. Moreover, I don’t like writing queries using ansii notation but MySQL allows you to write queries in near-Oracle like syntax. If you stick to generic best practices for Java web development, porting to Weblogic or WebSphere can be easy. However, it is likely that it’s easier said than done. Typically, the easiness depends upon how early you it in the project, how generically you write your code (using interface, generic integration points, generic services), not using proprietary libraries (opt for third party libraries for your frameworks and ORM’s) and any support contracts involving migrational implementations.
After reading this entry, you should be aware of the ramifications of which environment you want to choose. As I create more entries, I will update this blog to reflect other stacks I’m working on.
References:
- MySQL
- JBoss
- JBoss from Sourceforge
- Oracle
- Sun
- Postgress
- IBM WebSphere
- Weblogic
- Open Solaris
- Oracle JDeveloper
Notes:
The only time I recommend implementing a full Oracle Web Stack (Sun’s Java/Weblogic/Oracle XE/Open Solaris) is when the requirements warrant it. I’ve worked in an Oracle exclusive environment, and I love the technology, but the learning curve to develop in such an environment is too steep for most instances. However, I do have an Oracle XE instance lying around for my mini projects that keep me “sharp” on the technology.
One thing I never like doing in Oracle environments is the IDE. I’ve abandoned JDeveloper and set up Eclipse on my spare time and it payed off in dividends. I did this with the backing of management as I don’t like acting in “cowboy” ways of development. Abandoning JDeveloper for Eclipse is an easy sell to management any way, especially if done early on in the project. I hope Oracle does find some way to re-implement JDeveloper, by either acquiring IntelliJ, or basing it on Eclipse without alienating the IBM/open source community.