By Victor Rasputnis; Yakov Fain; Anatole Tartakovsky
A typical Java developer
knows that when you need
to develop a GUI for a
Java application, Swing
is the tool. Eclipse SWT
also has a number of
followers, but the
majority of people use
Java Swing. For the past
10 years, it was a given
that Swing development
wouldn't be easy; you
have to master working
with the event-dispatch
thread, GridBaglayout,
and the like. Recently,
the NetBeans team created
a nice GUI designer
called Matisse, which was
also ported to MyEclipse.
Prior to Matisse,
JBuilder had the best
Swing designer, but it
was too expensive. Now a
good designer comes with
NetBeans for free.
Service-Oriented
Architecture (SOA) is a
hot topic among analysts,
CIOs, and technology
marketers, but the path
from high-level
architectural principles
to programming a
functioning, real-world
service isn't always
clear, especially since,
in the end, you still
need to create a clean
user interface that's as
flexible as the services
it consumes.
In concurrent
programming, exclusion
refers to any technique
that dynamically locks
certain blocks of code so
multiple threads can't
corrupt their shared
resources in ways that
can cause integrity
problems. In Java,
exclusion has meant using
the synchronized keyword
against a method or block
of code to control access
to an object's lock.
Open Source Business
Intelligence software is
finally coming into its
own, with three major
players coming to the
fore: JasperReports,
Pentaho, and BIRT
(Business Intelligence
and reporting tools).
Business Intelligence
technology comprises
solutions for delivering
enterprise data in the
form of customizable
reports, facilitating
such practices as data
mining and decision
support systems. Of the
three leading projects,
both JasperReports and
BIRT are commercial Open
Source; they are backed
by JasperSoft and BI
veteran Actuate
respectively. Pentaho
uses the more traditional
collaborative Open Source
model. One of BIRT's
distinguishing features
is that it's an official
Eclipse project, giving
it a strong endorsement
by one of the leading
forces in the Java
community. Our team chose
BIRT after some due
diligence on the other
two because of our prior
experience with Actuate
and deep appreciation of
all things Eclipse.
JavaServer Faces (JSF)
standardizes the
server-side component
model for Web application
development but doesn't
standardize the
presentation layer at the
browser. In a series of
articles we are going to
look at how JSF can
fulfill new presentation
requirements without
sacrificing application
developer productivity
building Rich Internet
Applications (RIA). AJAX
has gained momentum
primarily due to the
XMLHttpRequest browser
object, which supports
asynchronous
communication with any
business services used by
the Web application.
Popular sites such as
Google Mail and Google
Suggest use AJAX to
deliver RIA.
Jakarta Struts provides a
standard framework for
Web applications, and
JavaServer Faces offers a
component-based framework
for user interfaces. At
the user interface, a
common task in both
frameworks is selecting
items from lists. Over
the years, standard
design patterns have been
developed for selection
lists. For developers,
the advantage of
implementing these
standard patterns is that
they are readily
available and offer a
familiar user experience.
Today's trend is to
integrate existing
systems in a standard way
to make disparate
implementations
interoperate. Web
Services and XML came
along with the ability to
provide a standard
communication interface
between these systems, as
well as the standard
description language -
WSDL - the Web Services
Description Language that
lets those systems define
the structure of the
services they're
providing.
By Victor Rasputnis; Igor Nys; Anatole Tartakovsky
Browser-based
applications are widely
used and we like the fact
that we can access them
from anywhere. But from
the users' perspective,
the productivity level of
Web applications still
doesn't approximate the
productivity of desktop
programs. The good news
is the gap is closing:
the accumulated potential
of multiple technologies
has boosted a whole new
breed of HTML-based apps
that are as powerful as
the desktop ones. Meet
AJAX.
Web sites were originally
static. Later dynamic
content came about
through CGI scripts
paving the way for the
first true Web
applications. Since HTTP
was entirely stateless,
it became necessary to
invent ways for requests
to be linked together in
a sequence. At first
state was added to the
URLs, but later the
cookie concept came into
being. By giving each
user a special token, the
server could maintain a
context for each user,
the HTTP session where
the application can store
state. As simple as it
is, the HTTP session
defines the entire
concept of what a Web
application is today.
This article aims to
illustrate how loose
coupling of a Model in an
MVC-based framework can
be achieved by describing
a real example -
developing a framework
for a Web-based XSD-XML
generator, which is part
of the Event Web research
at the Infospheres Lab at
Caltech. Why this is
important is explained,
along with a description
of the various techniques
used to accomplish the
goal. Examples include:
how a Model can be
initiated in a modular
manner; how to add
dynamic properties to a
Model without polluting
the Model base classes;
how to change the Model
without affecting its
existing operations; how
the Model can be switched
during runtime without
affecting interactions
with other components;
how all these can be done
if the Model is complex
as in a DOM structure and
is generated dynamically.
During the beta period
for JDK 1.5, we worked on
a 1.5 Java compiler for
BEA's Java IDE. As we
implemented various new
features, people would
begin exploiting them in
new ways, some clever,
some clearly candidates
for a list of what not to
do. The compiler itself
used 1.5 features, so we
gained direct experience
in maintaining 1.5 code
as well.
Whether writing code for
a small, single-platform
environment or
contributing to a
sophisticated
cross-platform,
multi-language
application, one truth
remains consistent: a
disorganized or poorly
implemented build
management strategy will
adversely affect a
developer's workflow.
In this month's article I
introduce TableLayout, a
robust but easy-to-use
LayoutManager for use in
any Java Swing
application. It's based
very loosely on the HTML
TABLE paradigm, where
components are placed in
table cells in row-major
order. Vertical and
horizontal alignment for
the component in a cell
can be specified, and a
component (cell) may span
rows and columns. I also
present Forms-Panel, a
JPanel sub-class that
abstracts the underlying
TableLayout.
AJAX and JMX are at
opposite ends of the
Systems Management stack.
However, the emerging
ubiquity of the AJAX
model for rich browser
clients has obscured the
benefits the model
provides in the
architectural space for
enhancing support
patterns within the
problem resolution
pipeline.
While creational patterns
decouple a client from
the objects it
instantiates, behavioral
patterns dictate the
object interaction. If
not carefully planned,
coupling and cohesion can
pose major design issues.
My previous article,
'Java GoF Creational
Design Patterns' (JDJ,
Vol. 9, issue 9),
discussed creational
patterns. This article
will focus on behavioral
patterns.
Like most other
self-respecting
developers I had also
read the GoF book 'Design
Patterns,' including the
section on the visitor
pattern. However, when a
colleague came over to me
with a question, I could
not initially justify the
complexity of the example
code I saw in the book.
What follows is a
discussion of why the
visitor pattern is the
way it is.
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