Choosing an enterprise-wide standard Java IDE

Reap the benefits of a cross-platform IDE for enterprise development

Today, as more corporations and systems integration vendors choose Java as the preferred language for development across n-application tiers, and the Enterprise JavaBeans (EJB) and the Java Platform 2 Platform, Enterprise Edition (J2EE) gain momentum, the need to define and standardize an enterprise-wide Java IDE is strongly felt by IT managers. In this article, I offer pointers on selecting a standard Java IDE for your enterprise development. However, first I will provide an overview of the Java 2 Platform, Standard and Enterprise editions.

Java 2 Platform, Standard Edition and Java 2 SDK

The Java 2 Platform, Standard Edition (J2SE) is a specification describing an abstract Java platform. It provides a foundation for building and deploying network-centric enterprise applications ranging from the PC desktop computer to the workgroup server. The J2SE is implemented by the Java 2 Software Development Kit (SDK).

The Java 2 Software Development Kit (SDK), which was formerly called JDK 1.2, is Sun’s reference implementation of the Java 2 Standard Edition specification and includes both the development tools and the runtime environment. While Sun’s JDK 1.0.x and JDK 1.1.x family continue to be called JDK, the JDK 1.2 and higher releases have been named Java Platform 2. For convenience, in this article I use the term JDK to include the Java 2 SDK.

J2EE and EJB

J2EE is a specification that is built on the foundation of the Java 2 Standard Edition specification.

Although Sun Microsystems invented the Java programming language, which has gained almost universal acceptance as the preferred programming language, both the EJB and J2EE specifications represent a collaboration between numerous vendors and industry leaders.

EJB defines a server-side framework and component model for the development, deployment, and runtime of distributed object-oriented applications. EJB is the core of the J2EE platform.

J2EE is the platform for enterprise solutions that is portable, scalable, and supports legacy integration and provides an architecture for supporting the EJB architecture-based components — all to achieve the ideal “write once, run anywhere” goal in the server environment. J2EE simplifies enterprise applications by defining and specifying a complete set of common standard services, such as naming, transaction management, concurrency, security, database access, and so on — and thus, provides the plumbing or infrastructural support for applications. J2EE also defines a container model, which houses and manages instances of J2EE application components. Containers are in turn housed within J2EE servers.

J2EE provides full support for EJB components, Java Servlets, JavaServer Pages, JavaMail, JDBC, CORBA technology for interaction with existing enterprise resources, and a security model.

In the J2EE model, you program the “business logic” rather than the “plumbing,” which is already provided for you. This boosts productivity and lowers development costs. J2EE also facilitates flexible deployment and customization on the target production environment by means of declarative attributes provided in a deployment descriptor, along with, middleware independence, server-side operating system independence, and application-server independence. J2EE components may be built in-house or procured off-the-shelf, providing more options and flexibility to your IT department.

J2EE aims to protect IT efforts and application development costs. In the past, application code tended to become redundant, and then a new, more powerful proprietary application server hit the market and IT managers needed to purchase it for its useful features and functionality. Under the new J2EE model, application code is written in compliance with a specification, rather than for a particular application server product.

Thus, vendors will provide products that comply with the J2EE specification and compete on the implementation, rather than create their own proprietary specification cum implementation. Within the last year, numerous vendors have released a variety of J2EE and EJB specification-based products.

J2EE reference implementation

A reference implementation of the J2EE 1.2 specification is available from Sun Microsystems as a free download (Resources). This J2EE reference implementation is a working version of a J2EE server and provides a standard platform for development and education. J2EE applications are, after all, meant to be written in compliance with the J2EE specification and later deployable on any J2EE server product that is compliant with the same specification. This reference implementation has undergone the same compatibility tests that commercial J2EE 1.2 server products must undergo.

J2EE/EJB support for OS platforms

J2EE/EJB-based products are available for a wide range of common operating system (OS) platforms. Several J2EE/EJB products support more than five of the common server OS platforms listed below. It’s interesting to note that support for Linux is on the rise. Flashline.com’s “Application Server Comparison Matrix” shows that there are currently 11 out of 30 major application servers supporting Linux, including products from major vendors such as Oracle and IBM. As Linux gains mainstream acceptance as a server-side platform, more J2EE/EJB vendors are supporting Linux, especially due to the fact that the Java 2 Standard Edition has already been implemented on Linux.

  • HP-UX
  • DEC Alpha
  • AIX
  • Sun Solaris
  • OS/390
  • OS/400
  • Windows NT
  • Linux

JDK and Java IDEs

Java software development centers on the Sun Microsystems’s Java Development Kit (JDK) or an equivalent standard JDK port from some other vendor. This JDK provides the APIs and basic, command-line-based functionality necessary to compile and debug Java programs nonvisually.

Java IDEs (integrated development environments) typically work in conjunction with the industry-standard JDK and aim at making a Java programmer’s job easier by providing useful features such as a Java-aware editor with keyword highlighting, brace matching, auto-indentation, and so forth; program template generation and automation of routine tasks; integrated debugging; and resource control and configuration management (optionally).

No Java IDE is a magic wand

It’s important to recognize that it takes bright and competent programmers who are well aware of good programming practices to write quality code that works, performs, and delivers. Although the list of positive attributes listed above help to make your job easier, no IDE can be considered a magic wand that creates or generates quality code for you. An IDE typically generates program templates and generally needs judicious “human” intervention by the programmer in order to write quality code.

In fact, some Java IDEs can even be cumbersome and non-intuitive. Some Java IDEs use proprietary repositories rather than a file system for storing Java source code, and hence, tend to “lock” you into a particular closed environment.

Other IDEs provide features — such as platform-specific libraries/executables, proprietary extensions, and so on — that are unused in most Java projects (not to mention being contrary to Java’s fundamental “write once, run anywhere” philosophy and adding to the IDE’s footprint size).

Categorization of Java IDEs

There are dozens of Java IDEs available both commercially and as freeware. Below I’ve categorized Java IDEs on the basis of operating system (OS) platform support:

  1. Java IDEs with OS-specific installation, supporting few OS platforms

  2. Java IDEs with OS-specific installation, supporting several diverse OS platforms

  3. Java IDEs written in 100 percent pure Java, installable on all OS platforms with available Java Virtual Machine

Of the above, Java IDEs belonging to the second and third categories are respectively “better” and “best” candidates for an enterprise-wide Java IDE.

What is the significance of OS support for selecting your enterprise-wide Java IDE? Typically, several OS platforms are in use within the same organization.

An enterprise-wide Java IDE that is platform-independent and written in Java means that it utilizes diverse OS platforms that exist within the enterprise today and having the freedom to make new OS platform purchases in the future. Various projects for various departments and clients on various OS platforms can thus be executed using a common cross-platform Java IDE, reducing the time it takes for programmers to become familiar with a new IDE.

Traditionally, the development environment tended to mirror the production environment, using identical OS platforms. Java and J2EE provide flexibility in your choice of OS platforms and J2EE servers, both in the development environment as well as in the deployment/production environment. Corporations can thus utilize as much of their available and preexisting OS platforms for Java and J2EE development. And they can retain flexibility and choice for their future OS platform purchases on both production and development environments.

Conclusion

The Java IDE of choice for corporate, enterprise- or department-wide standardization should ideally be one that is functionally useful with cross-platform support for diverse OS platforms, preferably written in 100 percent pure Java. Such an approach can truly leverage the advantages of Java and the J2EE platform.

Just as J2EE leverages existing technologies and resources and provides the flexibility to embrace new and evolving technologies, selecting a Java IDE written in Java is a synergistic approach that helps utilize available OS platforms for enterprise application development. It also retains the flexibility to bring in new OS platforms into the development environment in the future, all without any programmer IDE familiarization curve.

Sanjay Mahapatra is a Sun-certified Java
programmer and architect. He works as a Java architect for Cook Systems International, a systems
integration vendor and enterprise solutions provider for the Java 2
Platform.

Source: www.infoworld.com