I am thinking of using Java EE for my college project. Previously, I have used C# for a desktop application. I am new to Java and Java EE.
My question is this. What do I have to consider before starting a project in Java EE? I am thinking about using NetBeans as my IDE. Is this a good idea? I can choose either MS Sql Server or Oracle as my back end.
What do I have to consider before starting a project in Java EE?
This question is very broad and I don't know if this is exactly the expected answer but my suggestion would be to go for Java EE 6 (more precisely, for the Java EE 6 Web Profile which is a subset of the entire specification but should be more than enough in your case) and to use the following APIs:
JSF 2.0 for the presentation layer.
EJB 3.1 Lite for the services layer.
JPA 2.0 for the persistence of your domain objects.
For the runtime environment (the server to run the code), I suggest using GlassFish 3.0.1 Web Profile.
I am thinking about using NetBeans as my IDE. Is this a good idea?
That would be my recommendation. NetBeans is a very decent IDE, is beginner friendly IDE (but still powerful), it provides very good support for Java EE 6, very good integration with GlassFish, and has are plenty of tutorials and documentation available to get started:
Getting Started with Java EE 6 Applications
Java EE & Java Web Learning Trail
I can choose either MS Sql Server or Oracle as my back end.
Java uses an unified low level API called JDBC (JPA being a higher level API built on top of it) to interact with a database so choosing one or the other doesn't really matter from a Java point of view and it won't make any difference for a college project so pick the one you want to work with (if you already used SQL Server for your C# project, you might want to get some experience with Oracle).
Related questions
What to learn for making Java web applications in Java EE 6?
Related
It's my first day with Java EE and I would like to understand:
How I can set up a Java EE 7 project? and where can I check what Java EE version I am actually using?
I downloaded the latest Eclipse for Java EE Developers (Neon) and am now trying to understand how all these parts fit together.
I ended up downloading Java Platform, Enterprise Edition 7 Web Profile SDK Update 3 as well as a Shell file to install Java Platform, Enterprise Edition 7 SDK Update 3.
I know there is a lot of instructions provided but I would just like to set up my Eclipse environment.
Happy for any help or resource!
You can follow this tutorial http://www.edu4java.com/en/servlet/servlet4.html it's old but it basically the same thing
You have to create a new project (Dynamic Web Project)
The versions of the Facets you choose will determine which Java EE spec version it aligns with
Choose your application server (I personally recommend Wildfly http://wildfly.org/, but the built-in Java EE Preview Server can run Servlets on its own)
And you are ready to go !
I have experience in JPA in Java EE for quite some time. Now I want to develop a desktop application with Netbeans Platform using JavaSE.
(I am not referring to the simple use of Netbeans IDE to code, but to use the Netbeans Platform to develop thick client applications using JavaSE.)
Can any one point me to a document which demonstrate JPA support to Nebeans Platform Applications? Googling was not helpful.
The question is indeed appropriate.
There's a tutorial on how to do this here
is there a reference or book, maybe a tutorial that can get me started with ejb using the technologies that I have mentioned above?
thank you
You can take a look at the JBoss Tools if you're interested in developing Java EE applications in Eclipse.
If you already know EJB (and if you don't there is quite good Enterprise JavaBeans 3.1 book) you know you can develop your EJB's as plain POJO's just with annotations. No need for fancy plugins here.
You would, however, need a plugin to easily deploy your application to the server. In this case, take a look at these JBoss Tools and this topic.
In the scope of deploying small Java EE web applications at various client sites, I am searching for an easy application server solution.
I think I remember hearing that it was possible to use Jetty as a JavaEE 6 lightweight application server but I can't seem to find more evidence on this right now on the web.
Knowing that my development environment is JSF2 + RichFaces, CDI (Weld) and JPA 2 => NO EJBs at this point), is Jetty a possible solution for me?
If yes, could you point me to some docmentation or specific keywords helping me?
If no, what other lightweight Java EE 6 application server should I use?
Jetty is a servlet container, just like Tomcat. At the moment it's utterly unsuited as a Java EE 6 application server since the core requirement for a servlet container in that stack is being a Servlet 3.0 container.
Jetty 7, the latest stable version, is still at Servlet 2.5. At the moment nobody knows when Jetty 8, which will support Servlet 3.0 will be released, but experimental releases can already be downloaded. See http://www.eclipse.org/projects/project-plan.php?projectid=rt.jetty
Even when Jetty 8 will eventually be available, you'll of course still need to add JSF2 (Mojarra), CDI (Weld) and JPA2 (Hibernate).
Currently lightweight alternatives are Glassfish V3 (especially the Web Profile version). This weighs in at a 47MB download and gives you the full web profile. Glassfish starts up in approximately one second on modern systems and something like 2 or 3 on older ones. Memory overhead is minimal.
Yet another alternative is Caucho Resin. It's an inch away from being Java EE 6 Web Profile certified (see http://caucho.com/resin-4.0/changes/resin-4.0.14.xtp), and for all practical purposes is already fully useable as a Java EE 6 application server. Although I haven't personally used Resin, being lightweight seems to be their top priorities.
(do note that 'lightweight' is a vague and much disputed term)
Finally, you could give JBoss AS 6 a spin. Few people would call JBoss AS 'lightweight' (startup time on fast hardware is at least 12 seconds, and its download size is 181MB), but its free and open source and depending on your definition of lightweight those numbers may be 'good enough'.
I was very happy with a solution very similar to yours but using Spring 3 instead of CDI. It's almost the same. Everything was bundled inside WAR and for development mvn jetty:run was enough. No local app server needed.
However I'm sure you can embed Weld CDI implementation inside WAR. Still I'd prefer either "real" CDI JEE 6 stack or Spring.
If client of the system is on the web there are no advantages JBossAS+Seam over Tomcat+Seam?
Your questions suggests you're confused about what is what.
Seam is a framework for building web applications in Java.
JBoss AS is a Java EE application server.
Tomcat is a Java servlet container.
You can run Seam on either JBoss or Tomcat.
Since JBoss is a full EE app. server, you get certain features like Enterprise Java Beans out of the box with JBoss.
With Tomcat, you don't, but this isn't usually a big concern since, for example, Spring framework can replace Java EE if you need that functionality.
It does matter what you use, since the majority of your system will be probably coded in the back end (server side Java).
If you want the minimum amount of hassle when using Seam, I'd suggest using JBoss since that company made Seam.