READ DIGITAL EDITION


ADS BY GOOGLE
TOP THREE LINKS YOU MUST CLICK ON


How to Bring Eclipse 3.1, J2SE 5.0, and Tomcat 5.0 Together
How to create a Web project that has Java classes located in different packages and how we use ANT

Digg This!

Page 1 of 2   next page »

Eclipse is the most popular Open Source IDE on the Java market and the latest 3.1 release supports all the new language elements of J2SE 5.0.

In this article I'll show you see how to create a Web project that has Java classes located in different packages and how to use ANT to build this project and JUnit to test it. I assume that you have J2SE 5.0 installed and are familiar with Ant and JUnit.

Building Java 5.0 Applications with Eclipse
We'll build a servlet that will demo some new Java 5.0 features and do some basic tasks like creating a session to track user visits to multiple Web pages. This code can easily be extended to store a user ID in the session that will travel with her as the site is navigated. The value of the visit counter is stored in the session so multiple visits to the page will be counted (this includes the page refreshes after pressing the browser's "Reload" button). If the counter goes over five, the counter gets cleared.

Installing Tomcat
I've used Tomcat 5.0, which is available at http://jakarta.apache.org/tomcat/. Installation is a breeze, and it's smart enough to find your installation of J2SE 5.0. It also lets you test Java servlets easily on your own machine. Other that making you restart the server every time a new servlet is deployed, Tomcat is a great server for what we're doing and many other tasks.

Creating a New Project in Eclipse
To create our servlet, start by creating a new Java project by selecting the menus File, New, and Other. Then specify the name of the project, say, MyJavaProject, (make sure that J2SE 5.0 is selected as the default JRE), and click Finish. Actually, Eclipse lets you select a different version of the Java runtime at any time using the menus Windows, Preferences, Java > Installed JRE's. You can also set the compiler compliance level on the project level by selecting Java Compiler under the project's properties.

Since the standard J2SE 5.0 SDK doesn't support servlets, let's add the servlet.jar that comes with Tomcat. It's in its directory common\lib\servlet-api.jar. To add this external jar to an Eclipse project, right-click on MyJavaProject, select properties, Java Build Path, and under the Libraries tab add this external jar. Now our servlets will compile.

Eclipse by itself doesn't support debugging with Tomcat unless you add some custom Web development plug-ins to it, such as Web Tools Project (WTP). It's possible to debug Tomcat applications using Eclipse remote debugging capabilities. For more information see the Java Developer's Journal at http://java.sys-con.com/read/44918.htm.

Some of the New J2SE 5.0 Features
Let's create several supporting classes that will be used by our servlet and demonstrate some of the J2SE 5.0 capabilities. It's always a good idea to keep classes in separate packages based on functionality or some other criteria. Let's call the package "support." Just right-click on the project name, select "New Package," and enter the package name.

Autoboxing
Create a new class called Boxer that will support Java 5.0 enhanced boxing and unboxing operations. Right-click on the Java project, and select a New Class (un-check creation of the main method). Enter the source code of the class as shown in Listing 1 at the end of the article.

Just press Ctrl-S and the class is saved and compiled. As you can see, it has three methods for boxing, unboxing, and simplified adding to a collection.

Generics
Now create another class called Generic that shows how to eliminate the need for casting when retrieving elements from a collection by introducing generic collection types. You can specify the type of collection elements during its creation (see Listing 2). Generic types let objects of the same class operate safely on objects of different types. For example, they provide compile-time assurances that a List<String> always contains Strings and a List<Integer> always contains Integers.

Eclipse can handle both generic and non-generic types:

  • Generic types can be safely renamed.
  • Type variables can be safely renamed.
  • Generic methods can be safely extracted from or inlined into generic code.
  • Code assist can automatically insert appropriate type parameters in parameterized types.
In addition, a new refactoring option has been added. "Infer Generic Type Arguments" can infer type parameters for every type reference in a class, a package, or an entire project.

Enhanced For Loop
The next useful feature of J2SE 5.0 provides support for the enhanced "for" loop. This spares us from creating an iterator, navigating it, and retrieving elements from it. Create this class in Eclipse in the same package support (see Listing 3).

Java printf Function
Now, C-lovers, you can use the printf function in Java so create one more class as in Listing 4.

Methods with Variable Number of Arguments (varargs)
Java 5.0 lets you create methods with a variable number of arguments as in Listing 5. This method's signature is pretty similar to the public static String[] format(String str, Object[] args), however, it's more elegant to invoke since multiple arguments can be just passed on the command line rather than having to construct a whole new array.

Don't forget to create this class in the package support.

Static Imports
Allows importing static constants and methods, saves on extra mentioning of static classes (see Listing 6).

Creating a Servlet
Now that we've created all the supporting classes, let's create a servlet. First, we create a new package called servlet in our project.

Then, we can just create a SampleServlet class by selecting HttpServlet as a superclass in the Eclipse class creation window.

Servlets can handle all the HTTP protocol invocation types. GET and POST are the most common ones, through. Servlet code is in Listing 7.


Page 1 of 2   next page »

About Boris Minkin
Boris Minkin is a Senior Technical Architect of a major financial corporation. He has more than 15 years of experience working in various areas of information technology and financial services. Boris is currently pursuing his Masters degree at Stevens Institute of Technology, New Jersey. His professional interests are in the Internet technology, service-oriented architecture, enterprise application architecture, multi-platform distributed applications, and relational database design. You can contact Boris at bm@panix.com.

  Subscribe to our RSS feeds now and receive the next article instantly!
In It? Reprint It! Contact advertising(at)sys-con.com to order your reprints!
SUBSCRIBE TO THE WORLD'S MOST POWERFUL NEWSLETTERS

ADS BY GOOGLE
"Cloud Computing Is the Plan" - Ballmer Memo
With Microsoft mandarin Kevin Johnson bolting to Jupiter, leaving Microsoft to lick its wounds over
Cloud Computing - Start-Up Creates PowerPC-Based Cloud Desktop
There hasn't been a PowerPC-based computer since Apple abandoned the dingus and bolted to Intel, a m
What Does the Future Hold for the Java Language?
Before Java I was a Smalltalk guy. I remember switching from one language to the other and the tippi
Time for VMWare to Change Its Pricing Model
The once darling of the software industry, VMWare, is currently struggling to recover to anything cl
RIA Themes & Topics at the 6th International AJAX World RIA Conference & Expo
A round-up of the overall themes and topics being presented at the 6th International AJAXWorld RIA
Microsoft Reorgs After Key Exec Bolts
Microsoft CEO Steve Ballmer is now running the company's Windows, Windows Live and Internet properti
5th International Virtualization Conference & Expo in London Will Be the Most Significant Virtualization Event to Date
The conference theme of the Virtualization Conference & Expo Europe, to be held in London, England,
"Virtualization Power Panel" Live on SYS-CON.TV
Red Hat CTO Brian Stevens, Citrix CTO Simon Crosby, Egenera CTO Pete Manca, Allen Stewart, Group Man
Deploying into the Clouds: Concepts, Benefits, and Experiences
Cloud Computing offers significant benefits over traditional solutions for deploying production syst
Adobe's Kevin Lynch and Microsoft's Scott Guthrie to Keynote AJAX World RIA Conference & Expo
Two of the biggest launches in Rich Internet Application history took place in 2007/2008 when Adobe
Virtualization on Wall Street Conference & Expo Will Be a Leading Technology Event in New York
SYS-CON Events announced today that the Virtualization on Wall Street Conference & Expo will take pl
SYS-CON's Virtualization Expo Was Larger Than Any Gartner Event in Two Years
Virtualization has quickly become a staple new concept for enterprise IT. At SYS-CON's 3rd Internati
SYS-CON's "Cloud Computing Expo" Call for Papers Open Through July 31
The future model for providing IT infrastructure and services in large organizations is what many to
SYS-CON Launches Another Worldwide First: "Cloud Computing Journal"
The world's first journal devoted to the delivery of massively scalable IT resources as a service ha
Rating JRuby, Jython, and Groovy on Java Platform
Open source software, while not synonymous with Java, may often be seamlessly integrated with Java c
AJAX World RIA Conference & Expo Attracts Top Faculty
RIAs offer the potential to fundamentally change the user experience and in doing so, yield signific
Isilon Systems Licenses Likewise Technology
Likewise Software announced that Isilon Systems is licensing its technology to further streamline th
OrecX Debuts Open Source VoIP Recording Technology
OrecX announced the formal debut of its Oreka Total Recording (TR) software solution for customer se
NYFIX Chooses Egenera for Infrastructure Virtualization
Egenera announced that electronic trading systems pioneer NYFIX has standardized on infrastructure v
Cloud Computing Firm Closes $1.5m Series A
10gen announced $1.5 million in Series A financing from Union Square Ventures. The cloud computing c