This article provides a
solution for improving
productivity in scenarios
where EJBs are used to
implement business
services using Spring, an
Open Source POJO
container, as a
lightweight mock
container for testing and
using XDoclet attributes
to define design-time
considerations. The
proposed solution has
been validated using a
POC. The subsequent
sections explain the
problem context, the
different alternatives
and their pros and cons,
the industry trends and
best practices, and a
solution based on these
trends and best
practices.
Back in the '90s, we
became accustomed to
receiving half-inch thick
glossy brochures from
various training
companies. Five days of
such instructor-led
training would cost more
than $2,000. For
corporate employees this
was 'other people's
money,' and usually
employees were entitled
to at least one week of
such training annually.
'Java on mobile phones'
has been the hottest
topic at the JavaOne
conference for the past
several years. This year
was no exception and a
large part of the show
floor was designated as
the 'Wireless Village.'
With tens of billions
dollars' worth of Java
phones and related
services sold every year,
Sun and many others are
clearly making money.
However, most JavaOne
attendees I met were
enterprise developers.
At JavaOne this year, one
of the biggest
announcements (albeit
this one had nothing
really to do with Java)
was the acquisition of
SeeBeyond by Sun
Microsystems. It looks
like Sun is putting its
cash, which it has plenty
of, to good use. As we
have seen over the last
decade of Java, Sun is
not really a poster child
for making money from
software sales. The
SeeBeyond acquisition
seems to indicate a shift
in paradigm, an attempt
to drive a stake into
another tier (SOA) of the
multi-tier enterprise
application stack, a way
to expand the customer
base, and perhaps make
some money on software.
Despite the increasingly
widespread adoption of
J2EE for enterprise
applications, measuring
their performance in
production continues to
be a black art. Without
knowing what to look for,
many people measure
anything that seems
useful, which soon
results in an overloaded
system and reams of
meaningless metrics data.
It's tempting to just
throw xup your hands and
start making system
changes based mainly on
hunches.
The elegance of Java
stems from how the
language addresses a
number of highly complex
software engineering
issues in a seemingly
consistent and
easy-to-use paradigm.
While there are a few
potholes that you need to
be mindful of, most
caused by the differences
between primitives and
objects, the power and
reach of standard Java
are testaments to the
principle of simplicity
that is embodied within
it. Unfortunately, when
it comes to Java's
enterprise platform, J2EE
strays considerably from
J2SE in a number of
areas, creating
unnecessary additional
complexity and ambiguity.
To make matters worse,
J2EE 1.3 (EJB 2.0)
introduced
self-inconsistencies.
Network speed has
improved tremendously
over the years and has
revolutionized enterprise
computing, but even with
today's network
infrastructure sending
messages across a network
is of several orders
slower than sending
messages locally. The
latency caused by the
network is a function of
the size of the messages
and the number of round
trips.
If last September I was
calling the Java job
market healthy (see http:
//java.sys-con.com/read/4
6228.htm), today's market
is hot. Once again
recruiters are hungry and
polite, but this doesn't
mean you can easily get a
new job. I'd like to
share with you some rules
and techniques that can
increase your interview
success rate.
Over the course of its
life, the J2EE Web Tier
has faced many challenges
in easing Web application
development. While it's a
scalable,
enterprise-ready
platform, it isn't
exactly
developer-friendly.
Particular challenges to
Web developers include
the need for a standard
Web framework, compatible
expression languages, and
availability of
components. Several Web
frameworks have been
developed to resolve
these issues, each with
its own strengths and
weaknesses.
Service Oriented
Architecture (SOA) is not
so much a new technology
as a new state of mind.
Technology for
implementing business
logic in the middle tier
and exposing it as a
service has been around
for years. Yes, the
technology is more
standardized now and more
widely accepted. What's
really new is the growing
practice of approaching
SOA with an
enterprise-wide mindset
in which an organization
takes a holistic approach
to identifying the
services they provide.
The rise of the
Enterprise Service Bus
(ESB) is linked to this
new enterprise-wide view.
ESB and SOA are
complementary. One of the
tenets of SOA is loosely
coupling services.
Message-Oriented
Middleware (MOM) is used
to connect decoupled
systems. An ESB is
created by using
standards-based MOM
providers consistently
across an enterprise to
glue decoupled services
together. When used
together this ESB-powered
SOA enables the real-time
enterprise. The exact
nature of an ESB is
widely debated. Some
people see it as a
product, others as just
an architectural design
pattern. But most agree
that an ESB can be
thought of as the nervous
system of the enterprise.
It's the enterprise state
machine that gets its
stimulus in the form of
business events as actors
invoke services or
exceptional conditions
arise. These events flow
across the bus and are
evaluated based on
business rules. The rules
glue the decoupled
services together to
create a business
process. As the rules
invoke additional
services more events are
triggered and the whole
cycle begins again.
Object-oriented design is
like an alloy that
consists of a solid
grounding in the
object-oriented (OO)
approach and implements
the best OO practices,
heavily laced with how to
sidestep the OO pitfalls.
The design process is
more than just applying
basic OO principles.
As the Web becomes an
intrinsic part of the
economy and our everyday
lives, the success and
survival of many
businesses increasingly
depend on the
availability and
accessibility of their
core Web applications.
Although a high degree of
scalability and
reliability can be
achieved through the
right combination of
local and global
redundancy, load
balancing and sound
application design, many
companies turn to Content
Delivery Networks or CDNs
such as Akamai or
Speedera. This article
recounts experiences and
lessons learned from
developing an information
portal that serves
millions of users and
leverages Akamai's CDN.
Typically CDN providers
augment the traditional
Web infrastructure shown
in Figure 1-a by
introducing thousands of
edge servers usually
located at ISPs,
carriers, backbones and
other Web hubs around the
world.
How many times have you
coded a financial,
engineering, or pricing
calculator and used an
Excel spreadsheet as a
reference? What if you
could take that Excel
spreadsheet and make that
the business logic for a
Java application? The
e.SpreadSheet API from
ReportingEngines makes
that dream a reality.
Formula One e.SpreadSheet
Engine is a complete API
for reading and saving
spreadsheets. It can load
a complete spreadsheet
into memory, and do data
changes, calculations,
even charting, using
nothing more than the
formulas coded into the
spreadsheet! Even more
impressive is its ability
to create spreadsheets
from scratch. With this
functionality, reports
can be delivered the same
way they were received -
in a spreadsheet. In
this article, I'll take
you through a simple
example of using a
spreadsheet for common
business logic. I'll use
the JSP Tag Library APIs
to make the code easy to
follow along. But don't
be fooled. The full API
lets you do these
calculations in EJBs,
Swing Applications, or
any other code that needs
spreadsheet
functionality.
These days, powerful
computers (including
servers) are cheap
compared to the 'good old
days.' In fact, they're
even cheap compared to
what they cost a couple
of years ago. Vendors are
selling PCs whose CPUs
clock above 3GHz for
under $1,400. Their
memory and HDD capacity
are also impressive.
A custom multithreading
framework is an efficient
way to improve the
performance of Java
applications. It uses an
asynchronous parallel
pattern to implement the
business process.
However, its traditional
Java thread-based
implementation shouldn't
be used in applications
hosted in a J2EE
Application Server
because the threads in
that framework are beyond
the control of the J2EE
Container.
It's been almost 10 years
since enthusiasts around
the world started to form
small local communities
called Java Users Groups
(JUGs). They gather once
in a while after work to
network, listen to a
presentation on some new
Java technology or JSR,
and talk about what's hot
and what's not.
This article introduces
readers to bytecode
generation and shows how
to inject generated
bytecode into a JVM
runtime. After reading
this article, generating
a Java class won't be any
harder than creating an
XML document with the DOM
API.
Java Web applications
have needed a
standards-based API for
Enterprise Content
Management (ECM) for a
long time. ECM is an
essential requirement for
Web applications on the
Internet, intranets, and
extranets. ECM vendors
have proprietary APIs in
various languages and
this fact has inhibited
ECM architectures from
being interoperable.
With the standardization
of the Java Data Mining
(JDM) API, Enterprise
Java applications have
been given predictive
technologies. Data mining
is a widely accepted
technology used for
extracting hidden
patterns from data.
SOA is obviously the new
buzzword of the day.
Among the many acronyms,
one that is seen very
often is 'Same Old
Architecture.' In many
ways, this is true. The
key differentiator
between the paradigms
that have been prevalent
in the past and this new
incarnation of
'service-orientation' is
that the new definition
of services is targeting
the business as well as
the technical side of the
house. Same old
architecture - different
politics.
The latest trend in
information portals and
Web applications has been
to build complex Web
pages. To present large
amounts of information
and functionality without
compromising usability,
designers have imposed a
clear structure by
grouping related elements
together.
The Java Naming and
Directory Interface
(JNDI) is a standard API
to access different
naming and directory
service implementations
like LDAP. A naming
service provides naming
functionality and a
directory service
provides applications
with directory
functionality. The Java
naming service is a
fundamental component of
every J2EE system.
A multitiered J2EE-based
enterprise application is
usually deployed on
multiple J2EE application
servers running on
geographically separated
machines. It may also
integrate the services
distributed in
heterogeneous
applications within an
enterprise (such as an
ERP application or a
mainframe legacy
application). The Java
application servers may
also be grouped in
clusters for scalability
and high availability.
Improving overall system
performance is becoming a
challenging task.
In the past six months, I
had the opportunity to
work with two leading
firms in the Java world -
Nokia and JBoss. Being
the world's largest J2ME
device vendor and most
popular J2EE server
developer, respectively,
Nokia and JBoss come from
the two ends of the Java
technology spectrum,
which traditionally have
little to do with each
other. Yet, I have
learned that their
visions about the future
of the Java technology
are strikingly similar.
Developing lightweight
J2EE client applications
that interoperate with
multiple application
servers can be difficult
to do. Having to include
an application
server-specific JAR file
along with a thin client
application can
significantly increase
the size of the deployed
application and make it
too big to be practical.
Most Enterprise JavaBeans
(EJBs) serve a definite
purpose, performing a
specific set of actions
on behalf of client
applications. The
ubiquitous Bank Account
bean, which supports
basic account
transactions such as
withdrawal and deposit,
appears in almost every
J2EE tutorial. Students
are persuaded that
real-life EJBs, though
more advanced, are as
practical and particular
as those developed in the
classroom.
As demonstrated by the
emergence of multiple
portal initiatives within
organizations today, the
benefits of enterprise
portals are clearly
understood. It's common
to see several enterprise
portal platforms deployed
throughout an
organization. However,
many companies are
attempting to standardize
on one portal framework
but are challenged with
integrating disparate
portal instances.
Mobile communication
comes into our daily
lives very quickly, and
as of today several
wireless technologies
have become standard. In
this article I'll briefly
review Bluetooth
principles and the
principles of Java
development for Bluetooth
on mobile devices.
The Java Technology for
the Wireless Industry
specification (JTWI)
encompasses a standard
set of J2ME APIs for
mobile device development
that is being widely
adopted by mobile
telephone service
providers, making it an
important platform for
Java developers.
In the November issue of
JDJ (Vol. 9, issue 11) I
explained the theory
behind the JSR 168
(Portlet Specification)
from an academic
perspective. The
specification provides
the infrastructure,
classes, interfaces, and
JSP tags for building
applications that can be
pieced together from a
handful of off-the-shelf
or custom portlets. This
time around, I provide
you with a real-world
implementation that
utilizes the knowledge
you picked up from Part 1
of this series.
Last month's article on
EJB 3.0 (Vol. 9, issue
11) focused primarily on
the basic features of the
specification. Part 2
dives much deeper into
the specification to talk
about more advanced
features like dependency
injection, dependent
objects, secondary
tables, and inheritance.
A challenge of software
architecture is to create
software that can grow
with the business and
withstand changes to the
technology with minimal
redevelopment costs.
Business growth usually
means increased loads on
enterprise computer
systems.
It used to be difficult
if you wanted to create a
Web-based site that
offered users the ability
to access various systems
from a single page.
Systems were too severely
disjointed and required a
huge investment of time
and work in order to
bring them together in a
single Web page.
Life is not easy for
today's enterprise
application architects.
In today's IT world, the
architect not only has to
design solutions for a
plethora of
interdependent systems
(as is obvious from the
job description and
title), he or she also
has to conform to the
ever-evolving standards
in a shorter API life
cycle, plan for the
not-too-distant future,
collaborate with business
and technical
environments, and work on
a feasible roadmap for
his or her
application/application
portfolio.
Late last year, IBM
Corp., and BEA Systems,
Inc., introduced Service
Data Objects (SDO), a new
data programming
specification that
complements existing Java
2 Enterprise Edition
technologies and enables
service-oriented
architectures by
providing uniform data
access for a wide variety
of service and resource
types.
While many new database
persistence methods for
Java programmers have
been developed in recent
years (e.g., entity
beans, JDO, Hibernate,
and many others), most
database access code is
still native JDBC. This
statement doesn't express
a preference, just an
observation.
If you've ever used JNI,
you know how to manage
the primitive data types
between Java and the
native language. As you
delve into JNI,
particularly when
developing a Java API on
top of a native API, you
need to know how to
manage the objects
between Java and the
native language.
While the JAIN APIs still
play only a minor role on
Sun's Java Web site, the
JAIN initiative is
getting stronger. The
JAIN technologies (Java
APIs for Integrated
Networks) have the
potential to radically
change the existing
service architecture for
communications service
providers.
Grid computing is not
necessarily a new
concept; however, its
adoption within the
enterprise has given
birth to a new concept
called enterprise grid
computing, which is being
embraced by the entire IT
industry. Enterprise grid
computing aims to
consolidate IT resources
- including both
infrastructure software
and applications - and
optimize their usage,
cutting costs
substantially along the
way. Since Java and J2EE
are widely used as
enterprise software
platforms, how do they
align with this vision?
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