Java-based Application Development (Archived Report)










PDF version of this report
You must have Adobe Acrobat reader to view, save, or print PDF files. The reader
is available for free
download
.

ARCHIVED REPORT:
Java-based Application Development

by Geoff Keston

Docid: 00018686

Publication Date: 1508

Report Type: TUTORIAL

Preview

Java is a highly popular programming language that
is used on a variety of platforms, from Web sites to mobile devices to
the Internet of Things. Oracle continues to aggressively develop the
language, routinely adding new features. This report
examines Java’s evolution, current status, and future.

Report Contents:

Executive
Summary

[return
to top of this report]

Created
by Sun Microsystems and now
under Oracle’s stewardship, Java is an object-oriented programming
language, meaning it allows modular software pieces to be reused and
shared from one application to the next.


Related
Faulkner Reports
Java Development
Tools Market Trends
AJAX Web
Development Techniques Tutorial
Microsoft .NET
Technology Tutorial
The
Internet of Things Tutorial

The
language found early success as an embedded device platform and as a
way to enhance Web
sites. It can, however, also be used for a number of other
development purposes, many of them highly sophisticated.

Java’s
history was shaped significantly by Sun’s relationships with other IT
companies, relationships that alternated frequently between
cooperation and bitter dispute. The most notable relationship was between Sun and Microsoft. The parties
finally settled their disputes and stated that they planned to
cooperate, but in some respects they remain competitors. Microsoft’s
.NET platform is an increasingly more compelling alternative to Java
Enterprise Edition (Java EE). The decision whether to use Java or an
alternative for a particular application should be influenced heavily
by the preferences and experiences of an organization’s IT staff. Using
a development platform that the IT staff is skilled with will help to
reduce costs, speed development cycles, and yield better finished
software.

The
next version of the language  –  Java 9, to be released in 2016 
–  is
expected to be more modular and, according to Oracle, more secure.
Security is a key issue with Java, not because it is especially
vulnerable but because its popularity, combined with the fact that
many users neglect to apply its patches, make it an attractive target.

Description

[return
to top of this report]

Originally
developed by Sun Microsystems, Java is a programming language designed
for use on the Web, in intranet applications, and embedded devices,
among other uses. A number of qualities make Java well suited to
today’s networked computing environment, and as developers are looking
to link legacy back-end systems to dynamic interfaces online, many are
turning to Java.

Like
C++, Java is an object-oriented programming language. The goal of
object-oriented programming is to allow independent software components
to be reused and interchanged between programs. Software objects are
designed to work together at run time, interoperating regardless of
programming language or platform. When it comes to creating software
objects, the key distinction between C++ and Java is the learning
curve. Java was originally designed as a purely object oriented
language, in contrast to C++, which added object-oriented capabilities
to traditional C language programming. As a result, C++ is
significantly more complex than Java.

Java
is an interpreted language, which means Java source code is compiled to
an intermediate syntax at run time. Compiled Java source yields byte
codes, which are, in turn, executed by the local version of the Java
Virtual Machine (JVM). The JVM translates byte codes to the host
platform’s native instruction set. The JVM component of the
interpreter is also called the Java Runtime Environment (JRE). The byte
code format is architecture-neutral, and this is what makes Java
programs “platform independent.” Java’s claims of portability rely on
the fact that it is fairly easy to port the JVM to new platforms.
High-level Java source code sees only the byte code compiler, and in
theory, this interface is invariant. This differs from the more complex
compile-link-run cycle of languages like C and C++, where the
executable program is initially built for a specific target platform
and its unique instruction set.

Java’s
portability is ideal for applications distributed over the Internet or
other networks and for creating platform-neutral applications for PCs.
Though non-portable programs can exist in Java, they are relatively
easy for programmers to avoid. But what Java offers in portability, it
lacks in speed. Because Java is an interpreted language, it is not as
fast as a entirely compiled language like C. Java advocates claim that
the types of applications for which Java is best suited – GUI and
networked-based – do not need as much speed as others. Java’s speed –
or lack thereof – has become an issue, however.

Part
of the Java developers’ goal was to simplify C++ by removing
some of the lesser used and more bug-prone elements of the C language,
such as pointers, and adding other more efficient capabilities, such as
the garbage collection feature that automates memory management. Java
is multithreaded. It can handle different tasks simultaneously –
improving interactivity and performance, and working with threads in
Java is much easier than doing so in C++.
In the range of programming languages available, Java falls in the
middle – somewhere between the high-level interpreted scripting
languages like Tcl and UNIX shells and low-level compiled languages
like C and C++. Java attempts to combine the portability of the high
level languages with the speed of the low-level variety.

There are a number of Java APIs
designed for multimedia in client/server applications.
The Java Media Framework is designed to enable streaming audio and
video to be captured and transmitted across major operating systems.
This adds a media rich element to Java’s enterprise application
capabilities. Its small footprint makes it a good fit for applications
in portable multimedia systems such as video players, kiosks, and
Web-toys. JavaFX provides a development platform for the rich
content. The need for a platform-independent language to
handle complex e-commerce functions is paramount, and Java has seen
great success in this niche. Large-scale Java applications are in
common use today, new developers are cropping up all the time, and its
presence in consumer products is promising.

Current View

[return
to top of this report]

Java
has evolved from just a programming language to a system of development
platforms. Deployed applications range from embedded systems for
handheld devices to enterprise-wide, mission-critical applications. One
sign of Java’s popularity is data published in August 2015 by the
service Github, which lets developers host code on the cloud.1
The data showed that Java was the second most commonly used language,
behind only Javascript. Java rose to second place in the past few
years, moving past Ruby, PHP, and Python, all of which it trailed as
recently as 2011.

Since
2010, Java has been maintained by Oracle, which acquired Sun
Microsystems, the company that had been controlling the
language. Some
of the other factors that have recently
influenced Java’s development are outlined below.

Other Organizations Supporting Development

Apart
from the development work that Oracle directly performs, there are some
other organizations that help to shape Java:

  • The
    Java Community Process is an organization that allows anyone to make
    suggestions regarding Java-related technical specifications. One of its
    efforts is the open source OpenJavaFX Project, which aims
    to create “the next-generation Java client toolkit.”
  • GlassFish
    is a community project, sponsored by Oracle, that is developing an open
    source reference implementation of Java EE.

JavaBeans,
Java’s Reusable Component Architecture

A
crucial part of the enterprise platform is the JavaBeans component
architecture. JavaBeans provide an interface that allows independent
program modules to communicate. As reusable objects, JavaBeans
also reduce development time and reliability. JavaBeans
encapsulate user interfaces on the client side and business process
logic in their enterprise format, Enterprise JavaBeans. Enterprise JavaBeans offer vendor independence and
portability across different platforms and application servers,
providing consistent implementation of business process support. In
this role, they offer great advantages as a middle-tier of software
objects, interoperable with back-end systems, and linking distributed
application integration technologies like CORBA.

Java’s
Runtime Personalities: Servlets, Applets, and Applications

Simply
put, Java executables come in three basic formats: servlets, applets,
and applications. Servlets are Web server extensions that are
alternatives to traditional CGI scripts. They sit on the server and
dynamically create HTML page descriptions. Unlike applets, they are
never transferred to the client, but instead run entirely on the Web
server. Applets, on the other hand, are bundles of Java code that are
downloaded to a browser with a Web page. Performing the “HTML glue”
functions that CGI scripts traditionally have done, both are used to
create graphical elements like rotating ad banners and to perform
e-commerce-related functions such as transferring user input from a Web
page back to a database or server. Because servlets are on a Web
server, they perform better than CGI scripts. JavaScript, which is a
scripting language from
Netscape and not part of Java, despite its name, performs similar glue
functions, often tying Java applets together. Servlets
require explicit server side support, both for development and for
use. 

Java can also be used for creating full-scale applications. Some popular Java application development tools include NetBeans,
Embarcadero J Builder, JetBrains IntelliJ IDEA, and IBM’s WebSphere
environment.

AJAX

Asynchronous
JavaScript and XML, better known as AJAX, is a Web development
technique that enables developers to build interactive Web
applications. AJAX helps developers
create applications that are more responsive to users by exchanging
small amounts of data with the server behind the view of users,
essentially allowing a Web page to bypass having to reload each time a
user makes a change. AJAX looks to increase a Web page’s interactivity,
speed, and usability. While AJAX has both its positives and negatives, its use, as well as solutions supporting the technology,
continues to grow.

Embedded Software

Java
is a significant player in the embedded devices market. It is used in
mobile phones as well as devices such as set-top boxes, which also makes it an
important technology for the Internet of Things. The components of the
Java Platform Micro Edition are as follows:

  • Oracle Java ME Embedded
  • Java ME Software Development Kit
  • Oracle Java ME Embedded Client
  • Java for Mobile
  • Java TV
  • Oracle Java Platform Integrator

Outlook

[return
to top of this report]

Oracle
has continued to develop Java and to release new versions of it since
acquiring Sun. The current version as of August 2015 is
Java 8, but older versions are still in wide use. According to
an Oracle survey published in August 2015, Java SE 6 is used by 21-percent of developers that employ the language, Java SE 7 is
used by 43-percent, and Java SE 8 is
used by 35-percent.2 In the survey, 52.5-percent
of respondents said that they would “move to a new
version of Java SE in the next six months.”

Oracle
expects to release Java 9 in 2016. Describing the new version, one
company representative says that “in Java 9, we’ll be introducing
modularity to create a scalable and more secure platform. Beyond 9,
we’re thinking about value types, specialization, form function
interfaces, and so forth. The general theme there is more efficient
access to data and better control over data layout in memory to achieve
higher performance.”3

Recommendations

[return
to top of this report]

Java
can be used in many ways and in many scenarios, from small uses that have
little impact on an organization’s overall IT development to
far-reaching uses that affect an organization’s entire application
development and IT strategies. Although Java may have absolute
advantages in some areas of development, such as for
embedded devices, viable alternatives exist for any project a developer
may wish to complete. Many organizations choose between Java and a
competing platform based on the preferences and experiences of their
internal IT staff members. In most cases, this is a reasonable way to
choose. Selecting a platform that an organization’s existing
programming team is experienced with will help to shorten development
lifecycles, reduce staff and training costs, and minimize flaws in the
finished product.

An
area in which the decision whether to deploy Java becomes especially
significant is in choosing between Java EE and Microsoft .NET. While
Java remains more prevalent than .NET, usage of the platforms has
become more even. Java had a head start on .NET in respect to
popularity and capability, but the narrowing of the capability gap has
prompted a narrowing of the popularity gap. Selecting .NET can limit
users to choices of development tools. There are a much broader range
of software tools available to Java EE developers. Making this decision
more difficult, however, is that in late 2014, Microsoft announced that
it would make parts of .NET open source and that it would further
develop the platform to be usable on OS X and Linux, which it had not
been before.4

Developers working
with .NET will rely on Microsoft’s Visual Studio. Provided that users
are comfortable with Visual Studio, the lack of alternatives may be of
little relevance. Visual Studio is a sophisticated, well-designed
application. Developers who have particular preferences for other
products and features not available in Visual Studio, however, may
prefer to use
Java EE. The important consideration is that the choice between the
platforms needs to be in part a choice between development tools.
Organizations that have standardized on Microsoft technology may be best
off using .NET. However, for those who want or need to use
both
sets of technologies, the Mono project lets Java and .NET run side by
side and allows object interoperability.

Another consideration is that Java’s
popularity makes it a popular target for malware and other hacking. According to one
study, 119 new vulnerabilities were identified in Java in 2014, yet
48-percent of users did not have the most recent patch installed.5
 “This is not because Java is more difficult to patch,” said
Kasper Lingaard, a representative of the company that performed the
study, “but the program has a high market share and a lot of the users
neglect to patch the program, even though a patch is available.”6
Ensuring that Java’s patches are applied on-time is a key
responsibility of enterprise network administrators. But this can
be easier said than done, as it takes effort to identify all of the
instances of Java used in a network, from PC clients to mobile devices.

References

[return to top of this report]

About the Author

[return to top of this report]

Geoff Keston
is the author of more than 250 articles that help organizations find opportunities in business trends and
technology. He also works directly with clients to develop
communications strategies that improve processes and customer
relationships. Mr. Keston has worked as a project manager for a major
technology consulting and services company and is a Microsoft Certified
Systems Engineer and a Certified Novell Administrator.

[return to top of this report]