JavaServer Faces (JSF)
has seen increased
momentum among enterprise
Java developers ever
since it was incorporated
into Java EE 5.0 and
became the standard
framework for Java-based
Web development. While
some are just now taking
their first steps with
JSF, early adaptors have
already discovered both
the upside and downside
of this framework. Some
developers prefer to wait
for the next major JSF
release to get the
problems ironed out, but
others have implemented
enhancements on top of
JSF in various commercial
and open source
frameworks.
A standard from OASIS
called Web Services for
Remote Portlets (WSRP) is
used to allow portlets to
be decoupled from a
portal. It allows
portlets, which are
deployed to remote portal
servers, to be aggregated
at runtime into a unified
portal page by a local
portal server. The remote
portal server's portlets
are wrapped as Web
Services. The output of a
Web Service operation is
an HTML fragment used by
the portal to render the
portlet. Interestingly
enough, the portal server
software used to manage
remote portlets and the
portal can differ,
provided they both
conform to the WSRP
specification.
All too often quality is
an afterthought in the
application lifecycle.
Ever-changing
requirements, the
pressure of increasingly
short release cycles, and
factors such as
distributed development
compound the complexity
involved in effectively
managing quality
practices across
application lifecycle
activities. They also
cast the ineffectiveness
of addressing quality at
the end of the cycle - in
the 'test phase' - into
stark relief.
For the past ten years
application developers
have been stuck with only
two desktop client
choices. Traditionally,
they can choose either a
very thin Web-client
technology implemented in
HTML and CSS, or a very
heavyweight thick client
experience implemented
using traditional
client/server (C/S)
technologies (e.g. Java
Swing, MFC). It wasn't
until the introduction of
RIA technologies (e.g.
AJAX, Adobe Flex, Curl,
and Silverlight) and
widget engines (e.g.
Yahoo! Widgets and Google
Gadgets) that we were
given more options.
Web Services are becoming
the chosen way of
exposing interoperable
units of work as
services. Today consumers
and providers of software
services talk different
languages, and SOAP makes
them understand each
other. SOAP can be
transported via almost
anything, and we
sometimes joke that we
can even do SOAP over
FedEx if necessary.
Today's applications
require faster and more
frequent access to data
at the mid-tier than ever
before. This is due to a
number of factors,
including massive growth
of data volumes and the
extreme processing
requirements that
accompany such growth,
the pressure from
ever-changing business
requirements, and the
adoption of architectural
approaches and frameworks
such as Service Oriented
Architecture (SOA) and
Web 2.0 and the resulting
demands that these
frameworks make on data.
Deploying and migrating
JavaEE applications is
hard work. Specifically,
it's work that's
error-prone, repetitive,
and time consuming
because of the complexity
of setting up or tweaking
Web application servers.
The result is lost
man/hours, soaring costs,
and potential problems
associated with hidden or
unseen configuration
issues that might pop up
at a later time.
Furthermore the situation
is often muddied by the
'fog of war' - technical
personnel and their
managers don't really
have any easy way to take
an accurate snapshot of
current application
server configurations,
and no easy way to make
decisions regarding those
assets and how they can
(or can't) support an
enterprise's line of
business.
With any new technology,
best practice documents
are invaluable in helping
developers avoid common
errors and design quality
systems. There is much
literature already
available regarding best
practices for using Java
Management Extensions
(JMX) in monitoring and
management applications.
Popular J2EE application
servers, such as BEA
WebLogic and JBoss, have
used JMX for years to
manage and monitor the
health and status of
their many components.
This was the challenge:
Build a generic system
that lets users compare
data suppliers in
different categories. The
data to be compared is
defined by XML Schemas,
where new schemas will be
frequently uploaded and
existing schemas may be
changed. Moreover, the
schemas aren't
specifically designed for
this system, so system
specific metadata can't
be added as attributes.
Since its emergence, Web
Service technology has
gone a long way towards
perfecting itself and
finding its right
application in the real
world. With the maturity
of the specifications,
Web Service technology,
with its power of
interoperability, is now
the major enabling
technology of SOA, which
is being adopted by more
and more enterprises to
build their application
integration
infrastructure.
AJAX has forever altered
user expectations
regarding the experience
delivered by the Web. In
today's world, users sit
at the edge of their seat
waiting to see what
scrumptious eye candy
AJAX will serve them
next. Some of the more
notable visual effects
and desktop-like
interactions include
Prototype-esque fades,
Dojo style fisheyes, the
near ubiquitous
drag-and-drop, and, of
course, who can live
without the entertainment
provided by the
assortment of animated
loading icons that now
distract us while AJAX
does its asynchronous
'thing.' Yes, it would
appear that AJAX can do
it all and that no
desktop visual effect or
gesture is safe from
being outsourced to the
Web.
Virtualization technology
is transforming the IT
landscape and holds
significant promise for
those looking to maximize
hardware utilization as
well as reduce the time
associated with
provisioning and
administering separate
physical systems.
According to the Yankee
Group, today more than
60% of enterprises have
implemented
virtualization technology
- and by the end of 2007
that figure is expected
to increase to 90%.
As software developers we
have enjoyed a long trend
of consistent performance
improvement from
processor technology. In
fact, for the last 20
years processor
performance has
consistently doubled
about every two years or
so. What would happen in
a world where these
performance improvements
suddenly slowed
dramatically or even
stopped? Could we
continue to build bigger
and heavier, feature-rich
software? Would it be
time to pack up our
compilers and go home?
The multi-core buzz is
everywhere. Pick up a
newspaper and the local
electronics mega-store is
advertising multi-core
desktops and laptops to
the consumer.
Interesting, but what
does it mean to the
everyday Java programmer?
Maybe nothing. If you
live in the application
server world writing
EJB-based applications
your application server
does most of the heavy
lifting for you. It
handles concurrency just
fine. But that doesn't
cover all applications.
Multi-core technology
will especially affect
applications that must
process large amounts of
data in a
non-transactional
(outside of a database
context) manner. For this
class of applications,
the implications of
multi-core are huge.
It's widely recognized
that the
telecommunications
industry is riding the
crest of change and
evolution on the back of
new access technologies
such as 3G, GPRS, and
Wi-Fi. Such IP-centric
access mechanisms must
also be considered in
conjunction with the
emergence of
feature-enabling
technologies such as
VoIP, instant messaging,
and presence. A whole new
converged
telecommunications world
is emerging that requires
an appropriate
complementary IP-based
infrastructure as opposed
to the legacy,
circuit-switched
solutions of the past.
WebLogic Server 10
Technology Preview
supports JEE 5. A feature
of JEE 5 is the Java API
for XML Web Services
(JAX-WS) used to create
Web Services and Web
Service clients. WebLogic
Server 10 provides the
jwsc task to create the
Web Service artifacts and
the clientgen task to
create the artifacts for
Web Service clients. In
this article we'll create
an example JAX-WS 2.0 Web
Service in WebLogic
Server 10 Technology
Preview.
We live in a relational
world - which is too bad
since we develop with
objects. Since most
non-trivial applications
require information to be
persisted and retrieved
in what is generically
called a database, we
need to find efficient
methods for persisting
our objects and
retrieving them.
Historically, this has
been done with relational
databases and lots of
code that flattens the
objects and maps them to
the relational tables.
This can be done in Java
or with object-relational
mapping tools like
Hibernate.
The EJB 3.0 Java
Persistence API (JPA) was
released in May 2006 as
part of the Java
Enterprise Edition 5
(Java EE) platform, and
it has already garnered a
great deal of attention
and praise. What began as
merely an easier-to-use
successor to the
much-maligned
container-managed
persistence (CMP) portion
of the EJB component
standard soon evolved
into a full-blown
incorporation of the
existing best practices
of the most prominent and
popular object-relational
(O-R) persistence
products in use. The
result is that
applications now have a
modern standard for
lightweight enterprise
Java persistence that
they can use in any
compliant Java EE 5
application server, or in
Java Standard Edition
(SE) applications.
By Gopalan Suresh Raj; Prabhu Balashanmugam; Kevin Schmidt
Java is an outstanding
language for building
components, services, and
many applications that
are vendor and platform
neutral. The vast
adoption of Java
technology by the
industry in the past
decade is a testament to
the power of Java.
Development of new
applications, services,
and components using Java
is not going away, but
many organizations have
progressively moved to
the next phase in
maturing their IT
Infrastructure. This
phase is driven by many
factors including how
businesses operate today,
having to constantly
adjust to market trends,
and that IT has moved
from being a support
organization to being the
backbone of business and,
hence, needs to keep pace
with the organization.
Continuous and faster
alignment with changing
business needs,
time-to-market, and cost
are the factors that
determine success in this
phase.
The Standard Widget
Toolkit (SWT) is the GUI
toolkit used by Eclipse.
The same folks that
worked on the Common
Widget (CW) library for
IBM/Smalltalk developed
it, this time for Java.
Now, it's maintained as
part of the Eclipse
Platform project and
distributed under an open
source license, the
Eclipse Public License
(EPL). One key design
point of SWT is that it
uses native functionality
on each operating system
and, at the same time,
presents a common,
portable API. Joe
Winchester, Desktop Java
Editor for Java
Developer's Journal,
asked Steve Northover
(SWT Team Lead) recently
whether he'd be happy to
answer some questions
about SWT and, after
talking to his colleagues
and a few developers,
here is the result.
A challenge facing many
organizations is how to
quickly and effectively
react to frequent changes
in business requirements,
whilst improving
productivity and reducing
costs. To achieve this,
you need a flexible
infrastructure that can
meet the demands of a
changing marketplace and
seize emerging
opportunities. To
address this challenge,
Service Oriented
Architecture (SOA)
promotes an architectural
approach that replaces
rigid proprietary systems
with heterogeneous,
'loosely-coupled'
services. The Service
Component Architecture
(SCA), along with Service
Data Objects (SDO), makes
this architectural
concept a reality and
provides the programming
model to build SOA
solutions for agile
businesses.
What do Vannevar Bush,
Doug Engelbart, Claude E.
Shannon, and Konrad Zuse
(to name but a few) all
have in common? All were
missing from the initial
round-up I recently
published in an attempt
to nail down - by
consensus - the top 100
or 150 contributors of
all-time to i-Technology,
to the nexus of
technologies that first
spawned the Internet, and
since have helped
maintain and expand it.
Service Component
Architecture (SCA) is a
simple model for creating
service-oriented
applications. This
article highlights the
benefits of SCA and
introduces SCA concepts
by walking through an
example. The example has
been developed using the
Apache Tuscany open
source project (http://in
cubator.apache.org/tuscan
y/). All the sample code
in this article is
licensed under the Apache
License 2.0 (www.apache.o
rg/licenses/LICENSE-2.0)
and the resources with
the article gives a link
to the sample files. Both
the Apache Tuscany and
PHP SCA_SDO (http://pecl.
php.net/package/sca_sdo)
projects provide a free
service oriented
infrastructure for
creating, packaging,
deploying, and managing
applications built with
the SCA programming
model.
Putting AJAX
functionality into your
Web application can be a
daunting task when you're
first learning AJAX.
After all you're a Java
programmer not a
JavaScript programmer. It
can also be very
frustrating having to
learn how the different
browsers handle
XMLHttpRequests. It's
been reported, however,
that Internet Explorer 7
will support native
XMLHttpRequests rather
than requiring the
developer to make ActiveX
requests. This will make
a Web developer's life a
lot easier.
Much of the work
surrounding the design
and development of
enterprise applications
involves decisions about
how to coordinate the
flow of persistent data.
This includes when and
where to cache data, when
to apply it to a
persistent store
(typically the database),
how to resolve
simultaneous attempts to
access the same data and
how to resolve errors
that might occur while
data in the database is
in an inconsistent state.
A reliable database is
capable of handling these
issues at a low level in
the database tier, but
these same issues can
exist in the middle
(application server) and
client tiers as well, and
typically require special
application logic.
Understanding the
complexity of AJAX at the
browser level is critical
to refining and debugging
rich AJAX applications
that leverage Web
technologies such as
JavaScript, Cascading
Style Sheets (CSS), and
XMLHttpRequests. Adding a
third-party AJAX runtime
heightens the complexity
and sufficient browser
tooling becomes critical
when attempting to build
a rich Internet
application around
existing libraries. The
Eclipse AJAX Toolkit
Framework (ATF) provides
both a multi-faceted set
of browser tooling
features as well as
support for integrating
and building on existing
AJAX runtimes.
I have spent a good part
of the last year trying
to 'wrap' COM servers in
Java for a content
management organization.
It had an array of
syndication servers
supported by an
integrated messaging
platform developed using
COM. The purpose of this
exercise was to increase
the organization's market
penetration by hooking on
to the J2EE bandwagon
across multiple platform
configurations. With so
many different complex
COM servers to work with,
some supporting
automation and others
not, I struggled with the
all too familiar JNI
cycle...code, crash, code
some more, and then
crash. Literally
speaking, I must have
brought down the JVM
hundreds of times. To top
it off, some syndication
servers worked on a
'pull' mechanism, they
could pull the content
out from the interfacing
repositories. This meant
bi-directional access and
an event-based
interoperation.
Does this sound familiar?
You have a domain object,
perhaps for reporting
purposes, that's built
from a ton of JDBC
queries and it takes too
long to load. Nothing
else happens until this
object is built, so it's
become a bottleneck. Even
worse, each of the
queries is actually well
tuned, so there isn't
much to gain from
modifying the queries
themselves - there are
just too many of them.
You don't want to change
(or can't change) your
data model, so what can
be done to alleviate this
problem short of a major
redesign? There are
several options like
caching, lazy loading,
resource pooling. Another
worthy option would be to
implement a variation of
the concurrent query
pattern.
It's been over three
years since the JDBC
Expert Group held its
first meeting to gather
requirements, requests,
and pipe dreams for the
JDBC 4.0 specification.
In that meeting, we
discussed a wide variety
of topics, including
performance enhancements,
clarifications on the
existing JDBC 3.0
specification, and Ease
of Development features.
Unbelievably, everything
but the kitchen sink
ended up making it into
the release. In this
article, we'll look at
several key features that
made the enhancement list
for JDBC 4.0, and we'll
discuss why those
features are important.
Applying XSLT (eXtensible
Stylesheet Language for
Transformations) to XML
documents can be done
using the Java EE
(formerly J2EE) Servlet
filters model and Java
Server Pages (JSP)
technology. Servlet
filters can be invoked
before or after the
invocation of a
particular servlet or
JSP, based on the
incoming URL mapping,
which could be specified
as the central controller
servlet in a framework
such as Struts or a
custom-developed one. The
basic logical model is
shown in Figure 1.
By Jason Weathersby; Iana Chatalbasheva; Tom Bondur
The Eclipse platform is
an Open Source,
integrated system of
application development
tools that you implement
and extend using a
plug-in interface.
Eclipse provides a set of
core plug-ins that
configures the basic
services for the
platform's framework. A
platform developer can
build and integrate new
tools in this application
development system.
Experience has taught us
that it's not enough to
simply have a persistence
standard as part of an
enterprise specification.
It must be a standard
that can solve people's
problems and be useful to
most of the applications
that want to use it.
While earlier versions of
Enterprise JavaBeans
(EJB) persistence met
some of the needs, they
were primarily focused on
the distributed problem
domain. It is now known,
and has been proven by
successful commercial
products like Oracle
TopLink and Open Source
projects like JBoss
Hibernate, that the
objects to be persisted
don't have to be anything
more than simple Java
objects. The proof was in
the popularity of these
Object-Relational Mapping
(ORM) tools; most
developers have tended to
pick up and use these
tools rather than adopt
the Java 2 Enterprise
Edition (J2EE) entity
bean programming
standard.
Unlike the HTTP protocol
there's no stable default
JMS listener for invoking
the Web Services exposed
in Apache Axis 1.x using
JMS (Java Message
Service) as the transport
protocol - other than the
one provided merely for
demo purposes.
A previous article
compared Jakarta Struts
and JavaServer Faces
implementations of five
simple design patterns
for list selection. (JDJ,
Vol. 11, Issue 3). Long
lists and ordered
selections require a more
complex design pattern.
This pattern displays
available items in one
list and chosen items in
another so the user's
choices are always
visible and easily
modified.
I'm going to share my
experience of enabling a
graphics-oriented GIS
visualization module with
a C++ rendering engine
for a Java desktop
application using JNI
technology. The solution
was implemented in the
GIS library TerraLib as
part of the TerraLib
Develoment Toolkit (Tdk),
applying a JNI-bridged
drawing canvas as part of
the Components API used
by the rendering engine.
Testing Java code is
increasingly a task taken
on by developers rather
than separate teams to
which the programs are
handed. Many Java
developers are now
familiar with JUnit and
know the different
between unit tests and
integration tests. This
has been driven largely
by the focus on
test-driven development
(TDD) in extreme
programming (XP) and
other agile software
development
methodologies. While the
industry-at-large has
recognized the value of
unit tests and has a new
outlook on testing in
general, for the most
part, actual TDD
(meaning, the tests are
written first) is not
usually practiced outside
of hardcore agile shops.
This article will
describe our experiences
with developing a
Java-based instant
messenger application
using Jabber/XMPP
(Extensible Messaging and
Presence Protocol) - a
free, open and public
protocol and technology
for instant messaging.
According to the Jabber
Software Foundation,
'Under the hood, Jabber
is a set of streaming XML
protocols and
technologies that enable
any two entities on the
Internet to exchange
messages, presence, and
other structured
information in close to
real-time.'
By Mohamad Afshar; Nickolaos Kavantzas; Ramana Turlapati; Roger Goudarzi; Barmak Meftah; Prakash Yamuna
Service-Oriented
Architectures offer a
number of potential
benefits: They can
provide new opportunities
to connect enterprises
with customers, partners,
and suppliers; improve
efficiency through
greater reuse of services
across the enterprise;
and offer greater
flexibility by breaking
down IT silos. But these
benefits make security
more critical than ever.
Why? Services are highly
distributed, multi-owner,
deployed to heterogeneous
platforms, and often
accessible across
departments and
enterprises - and this
creates major security
issues for developers,
architects, and security
and operations
professionals.
Fortunately, there are
ways to make your SOA
more secure. If you're
building applications to
SOA using J2EE, BPEL, or
XML, you can build
security into an SOA by
addressing security
throughout the entire
application lifecycle -
not just at deployment
time.
In today's work
environment analyzing
large amounts of varying
data types is paramount.
Graphing techniques can
be an invaluable tool to
understanding and
interpreting that data.
In many cases
two-dimensional graphs,
such as XY, scatter, pie,
and bar charts, are
sufficient. But
increasingly more complex
graphing techniques are
needed. In these
instances Java3D is an
excellent resource with
numerous features that
allow personalized
generation of
three-dimensional data
displays. Not only will
Java3D yield better
insight into the data by
highlighting important
aspects of the data, but
it also makes attractive
displays to spice up any
presentation.
In the article 'Creating
Web Applications with the
Eclipse WTP' (http://jdj.
sys-con.com/read/152270.h
tm ), we created a Web
application using Eclipse
Web Tools Project, the
Tomcat application
server, and the MySQL
database server. That
application (DBTest) was
good, however, it had
some limitations
I took the advice of a
friend of mine and
steered clear of the
'normal' movie theaters
and went a little out of
the way to go to a DLP
movie theater. The
experience
There are 8,909 books
listed on Amazon.com with
the word 'Investing' in
the title; there are(!)
27,146 books with the
word investment in the
title. Without having lo
This book is an update of
an earlier version that
was written for SQL
Server 2000. It employs
the Murach approach of
dual pages that repeat
and enhance the concepts
Reviewers overuse the
phrase 'required
reading,' but no other
description fits the new
book 'Ajax Security'
(2007, Addison Wesley,
470p). This exhaustive
tome from B
In my many years of
programming, almost 20
years now, I have used
countless integrated
development environments
(IDEs). I have used
everything from a simple
text edi