Need help picking a Java EE development stack/application server and operating system

slugg

Diamond Member
Feb 17, 2002
4,722
73
91
I'm looking to make a virtual machine running some flavor of Linux, install a Java application server, deploy my proprietary software to the VM/app server, then distribute the VM as a virtual appliance. I'm not well versed with either Linux or Java, so I seek the collective wisdom of AnandTech.

So here are the needs:
1. Operating system must be able to be freely distributed even though the software it ships with will NOT be free.
2. The application server/dev stack must implement Java EE 6, but 7 would be nice.
3. The app server must also be freely distributable, even when shipped with non-free, paid software.
4. Setup and management of the OS and AS should be simple. I don't want any "1337 h4xer LiNuX" crap; I just want something straight forward and effective.

Here's what I'm thinking so far for the OS (one of these):
1. CentOS - free alternative to RedHat, rock solid SE-Linux, great support
2. Oracle JeOS - designed for application distribution, small footprint, not sure about support
3. ???

Here's what I've come up with for the application server and development stack (one of these):
1. JBoss - if using CentOS, this would kind of make sense. RHEL and JBoss are packaged together routinely, and CentOS is a free alternative to RHEL.
2. Glassfish - reference Java EE platform maintained by Oracle. If using Oracle JeOS, this would kind of make sense, too.
3. ??

What do you guys think?


edit:
I just started messing around with Oracle Linux... Looks all fine and dandy until you realize that it will not receive updates unless you pay for support! What a load of crap. What's the point of touting it as a free, enterprise solution if it can't even receive security updates for free?
 
Last edited:

Markbnj

Elite Member <br>Moderator Emeritus
Moderator
Sep 16, 2005
15,682
13
81
www.markbetz.net
I just started messing around with Oracle Linux... Looks all fine and dandy until you realize that it will not receive updates unless you pay for support! What a load of crap. What's the point of touting it as a free, enterprise solution if it can't even receive security updates for free?

Because Oracle.
 

beginner99

Diamond Member
Jun 2, 2009
5,210
1,580
136
CentOS with Tomcat 7

AFAIK Tomcat is not fully Java EE 6 compliant. So depending on the OPs proprietary Application it might not work.

Tomcat is a web container only (Java EE Web Profile in
Java EE 6 terminology).

That means that you have servlet, JSP, JSTL, EL, JSF etc.
to work with.

You don't have EJB, JCA, JTA, JMS etc..

You can also use all the third party web frameworks (Struts 1,
Wicket, Spring MVC etc.).

Most likely you will be fine, but obvious you should narrow
what you study to match what you have.

As OS I would use Lubuntu (Ubuntu with LXDE) or Ubuntu Server (no GUI).
 
Last edited:

sourceninja

Diamond Member
Mar 8, 2005
8,805
65
91
For a VM I would go with CentOS using their minimal install option. Then install the packages you need to support your application. The main goal here is getting a vm that ONLY runs the minimum needed to support your application. Stuff like desktops, services that are not used, etc will only up your vm's system requirements, bloat the vm's footprint, and provide more attack vectors. Ubuntu server's "minimal install for a virtual machine" is also a good option, but for professional work I'd go with Cent. Only because more people will be running redhat in their datacenter and will be familiar with it.
 

slugg

Diamond Member
Feb 17, 2002
4,722
73
91
For a VM I would go with CentOS using their minimal install option. Then install the packages you need to support your application. The main goal here is getting a vm that ONLY runs the minimum needed to support your application. Stuff like desktops, services that are not used, etc will only up your vm's system requirements, bloat the vm's footprint, and provide more attack vectors. Ubuntu server's "minimal install for a virtual machine" is also a good option, but for professional work I'd go with Cent. Only because more people will be running redhat in their datacenter and will be familiar with it.

Yea, I was thinking this, too. I've rolled a couple CentOS minimal systems over the weekend to toy around. So far, I think it's a great option. I'm equally familiar with RedHat/CentOS as I am with Debian/Ubuntu (not saying much - I'm not a Linux expert), but CentOS is a whole lot easier to harden than Ubuntu. For production, I want something that's designed for production, so CentOS wins it for me.

For my particular application, a "complete" Java EE implementation might not be necessary. I'm not entirely sure yet. That being the case, why are some of you recommending Tomcat? Why not JBoss or Glassfish? I'm trying to understand the advantages so I can make an educated decision.

As for the DBMS, I'm thinking Oracle XE. Can anyone come up with a compelling reason to use PostgreSQL? MySQL is out of the question. I'm picking Oracle so far because it's more widely understood due to its popularity, plus the Oracle SQL Developer software puts PGAdmin to shame. Then again, it was maybe two years ago the last time I checked.

Thanks, all.
 

beginner99

Diamond Member
Jun 2, 2009
5,210
1,580
136
For my particular application, a "complete" Java EE implementation might not be necessary. I'm not entirely sure yet. That being the case, why are some of you recommending Tomcat? Why not JBoss or Glassfish? I'm trying to understand the advantages so I can make an educated decision.

Tomcat is more lightweight.Tomcat is very nice, a lot of developers and admins know it. It is far simpler than a full blown java ee container.

As for the DBMS, I'm thinking Oracle XE. Can anyone come up with a compelling reason to use PostgreSQL? MySQL is out of the question. I'm picking Oracle so far because it's more widely understood due to its popularity, plus the Oracle SQL Developer software puts PGAdmin to shame. Then again, it was maybe two years ago the last time I checked.

This is easy. PostgreSQL is free and open source and free not meaning price but free to sue with no restrictions. The Question is more why you should not use it. Only reason I see is if the application only runs on oracle or 90% of your costumers use it with oracle.

Whats you issue with PGAdmin? Works fine for me. Note: I use SQLDeveloper daily and don't really like it that much. Actually I prefer HeidiSQL (MySQL, SQlServer) over both of them.
 

Nothinman

Elite Member
Sep 14, 2001
30,672
0
0
This is easy. PostgreSQL is free and open source and free not meaning price but free to sue with no restrictions. The Question is more why you should not use it. Only reason I see is if the application only runs on oracle or 90% of your costumers use it with oracle.

Whats you issue with PGAdmin? Works fine for me. Note: I use SQLDeveloper daily and don't really like it that much. Actually I prefer HeidiSQL (MySQL, SQlServer) over both of them.

Agreed. One should default to either MySQL or PostgreSQL and need a very, very good reason to even consider Oracle not vice versa.
 

tfinch2

Lifer
Feb 3, 2004
22,114
1
0
We have standarized on SLES, Tomcat, and PostgreSQL where I work for our virtual appliances. We picked SLES because we worked out a deal with them. Before SLES, we used CentOS. You could also look at openSUSE too.

To build the appliance, take a look at VMware Studio or SUSE Studio.
 
Last edited:

smackababy

Lifer
Oct 30, 2008
27,024
79
86
Agreed. One should default to either MySQL or PostgreSQL and need a very, very good reason to even consider Oracle not vice versa.

By very, very good reason you mean "we are a company and have to waste as much money as possible on a database solution"? Because that is what I see a lot. =(
 

hooflung

Golden Member
Dec 31, 2004
1,190
1
0
I use CentOS + Tomcat + Infinispan + Spring 3.2 + PostGresql in my out of office endeavors.

I don't need a full J2EE stack because that is not really a big deal now a days since J2EE isn't really what people care about. Not to stir up a holy war with purists (I think J2EE has its place) but it is playing catchup and isn't as intuitive for most things.

However, if you need J2EE stack and you are doing CentOS you could leverage Apache TomEE. It is pretty good. Tomcat's biggest weakness imo is the connection pooling (has gotten better admittedly) and JNDI ease-of-use.

If you need JNDI for a lot of things then I would probably look towards Glassfish 4 or JBOSS. CentOS is fine but Ubuntu Server is just as good, and in some ways better since you get even closer to up-to-date OS and OpenJDK updates.

Database should probably be Postgresql. The reason why I say this is that if you go JPA chances are your entities will work without much tweaking between the two (for sequences etc). If you use MSSQL, Mysql/Maria or anything else with a built in auto increment you will have a bit different entity code.

Good luck... and stay away from JeOS. Stick to the known distros unless forced by a vendor.