Proceed to WirelessDevNet Home Page
Publications, e-books, and more! Community Tutorials Store Downloads, tools, & Freebies! IT Career Center News Home
newnav.gif

Newsletters
EMail Address:



   Content
  - Articles
  - Columns
  - Training
  - Library
  - Glossary
 
   Career Center
  - Career Center Home
  - View Jobs
  - Post A Job
  - Resumes/CVs
  - Resource Center
 
   Marketplace
  - Marketplace Home
  - Software Products
  - Wireless Market Data
  - Technical Books
 
   News
  - Daily News
  - Submit News
  - Events Calendar
  - Unsubscribe
  - Delivery Options
 
   Community
  - Discussion Boards
  - Mailing List
  - Mailing List Archives
 
   About Us
  - About WirelessDevNet
  - Wireless Source Disks
  - Partners
  - About MindSites Group
  - Advertising Information
 

The Java Platform

Overview

The term ‘Java’ can instantly conjure up numerous definitions depending on who in the computer industry you ask. Programmers would say it’s a language, while corporate IT shops might label it a distributed object technology. Designers might see it as a web page design tool, while client/server developers view it as a great server development tool. Any one technology that means so many different things to so many different people is clearly worth further inspection!

Java is, at its most basic, a programming language created by Sun Microsystems. The language itself bears great similarity to the C++ programming language. In fact, many developers sum up their descriptions of Java as C++ without multiple inheritance, pointers, header files, or compiler directives. It was, to quote James Gosling (leader of the initial Sun Java project), designed to be "fully buzzword-compliant". Java is:

  • Object-oriented
  • Multithreaded
  • Cross-Platform
  • Distributed

Why Java?

One of the key components of Java’s success in addition to the great programming language and cross-platform support is its approach to distributed programming. Java code can be downloaded dynamically from remote servers and interpreted on-the-fly within a local application or applet (an applet is a Java program that runs within a Web page). A compiled Java program is distributed as a set of files known as class files (one Java class per file) and is generally run through an interpreter (known as the Java Virtual Machine, or JVM) on the client. The JVM handles the platform-specific calls such as GUI, file-system, and networking calls and also performs run-time garbage collection to remove unused objects from memory. This garbage collection process removes the burden of managing memory from the programmer resulting in drastically fewer runtime programming errors.

Java also supports distributed object programming (the instantiation and use of objects running on other servers) through its native protocol, Java RMI, and also through CORBA. Sun has recently announced support of the CORBA wire protocol, IIOP, in future versions of Java RMI. This means that, in theory, a client application running on your Palm organizer could instantiate remote objects written in any CORBA-compliant language (COBOL, C++, SmallTalk, Java, etc.) on just about any operating platform. At the current time, a full Java implementation is not available for the Palm Computing Platform, but it will only be a matter of time, in our opinion, before Java becomes a force to be reckoned with in the mobile arena as well.

A Java For Every Market

The term Java Platform refers to the Java programming language, along with its runtime interpreter (Java Virtual Machine), development tools (Java Software Development Kit), and Application Programming Interfaces (APIs). The Java language and JVM remain the same on every Java platform, however the development tools and APIs vary depending on which "edition" of Java you are using.

Sun currently markets three editions of Java:

  • Java 2 Enterprise Edition - contains the Java Base Platform along with numerous enterprise APIs and tools. These include Enterprise JavaBeans, Java Server Pages, the Java Message Service, Servlets, XML, database connectivity via JDBC, CORBA functionality via JavaIDL, and the Java Native Directory Interface (JNDI).
  • Java 2 Standard Edition - contains the standard Java APIs and functionalities used by the vast majority of Java developers. These include the following capabilities: GUI development, network programming, applet and application development, internationalization support, multithreading capabilities, and input/output APIs.
  • Java 2 Micro Edition - The J2ME includes a minimal set of APIs and a scaled down JVM known as the K Virtual Machine. Depending on the class of device, different add-on APIs are also provided. For more information on J2ME, see our article at http://www.wirelessdevnet.com/channels/java/features/j2me.html and also the J2ME home page at http://java.sun.com/j2me.

It should be noted that code developed for the J2ME can be run on both the J2SE and J2EE as well on the complete range of hardware devices and operating systems that currently support the Java Platform.

The Business Case

Pros

Java has become the common language that virtually all server-side development tool vendors support. Supported functionality includes application servers, Web servers, relational database servers, transaction monitors, and message queues.

Java’s cross-platform capabilities and its ability to dynamically load code across networks make it a natural fit for Internet and distributed applications development.

Most programmers find Java very comfortable to program in and love the language.

Java is currently the only technology that offers the wireless developer the hope of writing one application that will run on numerous devices (from UNIX to Mac to PC to PDA to cellphone) with no changes. Wireless device manufacturer support continues to increase and future support will be regularly reported on at this site.

Cons

Cross-platform support is often left up to the implementor of the virtual machine on your platform. If that vendor has failed the specification in some area, your code may not run unmodified. As Java matures, this is becoming less and less of a problem, however the problem does exist.

Due to its interpretive nature and run-time garbage collection, no Java application will ever be able to run at the same speed of its compiled C/C++ counterpart. However, ‘just-in-time’ compilation technology is progressing to the point where Java applications are at least within range of their fully compiled counterparts.

Java will never be a svelte memory consumer due to the reasons stated above. This can present problems with handheld devices due to their limited memory and processing power. The Java 2 Micro Edition goes a long ways towards "slimming" down the Java runtime, but with this reduced memory requirement comes reduced functionality as well. The developer will need to carefully examine the advantages and tradeoffs involved with any application development tool in this arena before making a choice.

Vendors

Hardware Support (partial list)

3COM
Ericsson
Alcatel
Motorola
Psion
Sharp

Software Support (partial list)

Sun
Microsoft
IBM
Inprise
Symantec
Metrowerks
Oracle
Sybase

Other Resources

Books

See our Books section for recommended Java books that can be ordered directly from WirelessDevNet.com.

Links

Java Home
JavaWorld
Java Developer’s Journal
Java Buyer’s Guide
Gamelan
Wireless Developer Network Message Boards

Next: The Java Programming Language

Sponsors

Search

Eliminate irrelevant hits with our industry-specific search engine!









Wireless Developer Network - A MindSites Group Trade Community
Copyright© 2000-2010 MindSites Group / Privacy Policy
Send Comments to:
feedback@wirelessdevnet.com