J2EE Tutorial - Introduction

There is a great demand for experienced J2EE professionals now in the market and students and programmers from other languages want to know whether J2EE is Java atall or something else.

J2EE Tutorial - Introduction

J2EE Tutorial - Introduction

     

About the author (Published in DeveloperIQ - www.developeriq.com Magazine)
Author Name: R.S. Ramaswamy
Description: Asst.Professor, HOD
Email: [email protected]

There is a great demand for experienced J2EE professionals now in the market and students and programmers from other languages want to know whether J2EE is Java atall or something else. This tutorial is a conceptual presentation of what & why of J2EE. (It is better for aspiring Java professionals  to be forewarned that the Industry expects sound knowledge of EJB, JAX and Struts ..as well as hands on experience in Application servers like WebLogic /WebSphere as  a  MINIMUM! .It is also important to remember that jdk1.4 is the current version with a lot of new features and jdk1.5 is expected shortly. Moreover, Security in computing is assuming great importance and the candidate should have sound knowledge about java security.)

  J2EE is not the Java , that comprises of topics like Applets, Console- mode programs, Standalone GUI, Multithreading, Graphics,Exception-handling, String processing, IO Streams, Java Beans in BDK, Swing etc.( topics covered in great detail by books on Core Java , such as 'Java2 -complete reference' by Schildt.,with not a word anywhere on that staple of Computing world of any type (ie) DataBase access!)

The title of the book was  appropriate some 7 years back! That is why we are puzzled and dismayed that the Java that we studied so 'completely'  is   so basic  and   so incomplete!..To be fair, even with the arrival of jdk1.1,some authors like Bill McCarty ('Java ..Distributed Objects') and Jaworsky ('Java2 Unleashed')  had a better perspective about the Enterprise potential & orientation of Java and wrote accordingly. However, they are being mentioned only now in curricular circles. after  what they wrote so well has sadly become  ,   partly outpaced..This is not to say that Core Java is useless. As the name suggests, it is the core and absolutely essential . But, Java has always been a language for the Web and Enterprise. Without that essential paradigm shift from desktop/LAN to the sprawling WEB & huge enterprise data, it is  very difficult to appreciate the modern trends and why there is so much clamour for J2EE (despite  the supposed challenge from DotNet).  The only topics that  could bridge the Core and Enterprise Java are Sockets & Beans.

   (Among web-professionals, there is a  fancy for  JavaScript, which is mostly used in Client-side webpages ..It's only use should be 'client-side' validation and no gymnastics. JavaScript is in no way connected with Java . It is unfortunate that this 'script' originally known as 'Live Script' from Netscape , got mixed up with Java . When any one talks about Java Script in the same breath as Java, he is missing   Enterprise Java, the true essence of Java language.

For aspiring J2EE professionals, ' the less javascript, the better' should be the  motto.). We will  begin with what  Javabean is and  also see how beans can be used in Socket programming. Then we will bring out the difference between  invoking the method on a  bean  in a remote server by passing arguments & the Distributed Object paradigm. We will also explain why Distributed Object Technology  is not just Client-server  or Web-server technology and why it is superior. Finally, we will see why Distributed Object Technologies  like EJB ,CORBA & DCOM were found to be wanting in true inter-operability and how the problem is being sought to be tackled by the latest approach (ie) XML WEBSERVICE.

   This, however, is pretty long journey and this 'short' tutorial cannot cover   all the details. The readers are equested to refer to the books mentioned  towards the end  to get  more details.

  J2EE ( Java 2 -Enterprise Edition) is a basket of  12 inter-related technologies , which can be grouped as follows for convenience.:

Group-1  (Web-Server  &  support Technologies )
=====================================

  1) JDBC   (  Java Database Connectivity)

  2) Servlets

  3) JSP   (Java Server Pages)

  4) Java Mail

Group-2   ( Distributed-Objects Technologies)
=====================================

  5) RMI  (Remote Method Invocation)

   6) Corba-IDL   ( Corba-using Java  with OMG-IDL)

  7) RMI-IIOP   (Corba in Java without OMG-IDL)

  8) EJB   (Enterprise Java Beans)

Group-3  (  Supporting & Advanced Enterprise technologies)
=============================================

  9) JNDI   ( Java Naming & Directory Interfaces)

   10) JMS   ( Java Messaging Service)

   11) JAVA-XML  ( such as JAXP, JAXM, JAXR, JAX-RPC, JAXB, and XML-WEB SERVICE)

   12) Connectors ( for ERP and Legacy systems).

  J2EE is essentially about Distributed Objects Technology, which is   defined  as  invoking  a method on an object residing in a remote machine as if it were local to  the invoking program. The Distributed Object may be based on  RMI   or IDL  or RMI-IIOP   or EJB.

The invoking program can be a standalone  mode java program. But , if this were so, it presents two problems. The first problem is that it requires JDK  to have been installed in each end-user's machine.This is not a correct assumption because, the only thing that we can be sure of is that the  end-user has a browser.

Secondly, even with JDK installed in the end-user machine, the java program has to be distributed to each client personally.. This is hardly a practical proposition, if we want our program to be useful to lakhs of end-users out there.

   Applets, are  a possible solution. An applet is a java class file embedded in HTML document, downloaded from the web server and executed in the end-user's browser.( The browser should be java-enabled). With built-in sandbox security, Applets   made program distribution  very easy and elegant.

   However, Applets also had  two problems. First, standard browsers like InternetExplorer(Microsoft) and NetscapeNavigator (NetscapeCorporation)  did not implement JDK fully. This required a java-plug in from Sun.This was clumsy. Secondly, java applets, except in very simple cases, downloaded  the classes from the server and though this is a remarkably powerful feature, it also meant that the process was a heavy one and entailed delay in downloading.

  For these reasons, Applets also ceased to be the recommended method. That is why Sun developed the Servlets technology. Servlets are java class files , execeuted  in server and the resulting html sent to the end-user's browser. Now, at one stroke , it solved many  problems. 0

   1) We no longer  had  to instal JDK in end-user's machine. 

   2) We need not  have a java-enabled browser at the user's end.

   3) As the result was sent as html only to the browser, it is   lightweight & very fast. 1

  But, this creates a different problem! A  WebServer is just for delivering documents as requested by the user. It need not have any scripting features. Various Webservers have built in facilities for executing CGI  and CGI like programs. For instance, Personal WebServer has built in feature for executing ASP which uses VBScript. Apache server provides PERL & PHP. Similarly , JavaWebServer provides  Servlet engine and JSP engine. Realising that Apache is the leading WebServer in Internet world, Sun collaborated with Apache Foundation and created the Tomcat engine. We must remember that not any web server can execute a servlet.. So, the correct method of invoking the function on a remote object in remote server is through a servlet.  The modern practice is to have a thin client.(ie) the end user has just a browser like InternetExplorer or Netscape Navigator. He downloads an HTML form and invokes a servlet or JSP through the form.

 If  Distributed  Objects are not involved, the servlet/jsp does the processing   in web  server itself and sends the result to the browserFor Distributed Computing , however, the servlet program in the web-server is the client-side for the Distributed Object computing.It invokes the  method of the remote object in the  Remote Server. ( it may be RMI/IDL/RMI-IIOP/EJB).The result is sent to the end-user's browser. . All this may  be very  dense  fog right now but  will   clearup  as we progress.

With these introductory remarks, let us now take up the technologies one by one. 2

Group1
========

Servlets & JSP are Web-server technologies.( Distributed Objects Technologies are  the more advanced stage...covered in second group) In most of the cases the requirement is that a database is to be accessed  either for queries or for modifications . So  we use a jdbc program in the webserver and access the database & send the result to the user's browser.

  Apart from this , it is also very useful to be able to send email  through the server. These two opeartions (ie) database operation & mailing are  essential applications in webserver. That is why JDBC & JavaMail have found a prominent place in the first group of J2EE technologies. 3

JSP ,  is a technology which tries to separate the code from the presentation.( However, new developments like JSTL (Java Standard Template Library) & Struts have appeared which insist on much higher degree of separation between code & presentation.JSP-2 is awaited and  it aims at total elimination of java code anywhere in the JSP page!..something that ASP.NET has already achieved!).