The other day when I
arrived at work my
phone's voice mail light
was lit up. Cool, except
that after pressing the
voice mail button I was
asked to enter my
password. Issac Asimov's
first law of robotics
states that 'A robot may
not injure a human being
or, through inaction,
allow a human being to
come to harm'. Around
this time my office mate
returns from lunch and
inquires why I'm still
there given it's such a
nice day outside. The
answer is that it was
taken away from, me by a
robotic system
administrator and a fax
machine who together,
figuratively speaking,
ate my lunch.
Can afford to take just
one day off, get out of
your cubicle and see what
other people up to these
days? Is J2EE still in
favor? What's this ESB is
about? Have you even
heard of using Flex as a
Web front end of your
Java applications? Do not
miss an event in NYC this
Monday, that is created
for people who think that
they are way too busy to
take several days off and
spend them in the class.
Just take one day off and
attend the Real-World
Java event. The
discounted rate for this
event is $395. To get
this discount, enter the
coupon code ?JUGgold'
while registering
In Bernard J. Baar's book
'A Cognitive Theory of
Consciousness,' he
describes the brain as
having a single conscious
area that can be occupied
by one thought at a time.
The unconscious part of
the brain stores memories
and experiences and, like
the conscious brain, is
capable of performing
tasks; however, it does
so automatically, unlike
the conscious area that
requires the intervention
of the 'self.' The first
time we are given a new
input, sensation, or
experience to deal with,
the conscious brain is
responsible for analyzing
it, comparing it to
something that has
occurred before, and
dealing with the action
accordingly. Repeated
exposure to the same
input drives the response
into the unconscious area
of the mind, so the next
time the same experience
is encountered, an
automatic reply can be
recalled without
requiring conscious
intervention.
The WebRenderer Swing
Edition changes the face
of Java Swing
applications and the
rendering of Web content
within Java. Before we
jump into that, let's
take a look back at Web
content display in Java
desktop applications
including the
generational changes and
Java's very own 'Browser
Wars.'
At the moment there seems
to be an extremely
unhealthy obsession in
software with the concept
of architecture. A
colleague of mine, a
recent graduate, told me
he wished to become a
software architect. He
was drawn to the glamour
of being able to come up
with grandiose ideas -
sweeping generalized
designs, creating
presentations to
audiences of acronym
addicts, writing esoteric
academic papers, speaking
at conferences attended
by headless engineers on
company expense accounts
hungrily seeking out this
year's grail, and
creating e-mails with
huge cc lists from people
whose signature footer is
more interesting than the
content.
At the annual Alan Turing
memorial lecture given by
Grady Booch in London
last month, he chose as
his subject, The promise,
the limits, and the
beauty of software. It
was an excellent address
in which one of the
themes was that for each
of the incredible
advances that software
has brought to our lives,
there is an almost
Newtonian opposite effect
that is negative and
destructive. One such
example given was e-mail:
while making us able to
communicate instantly
with our peers, allowing
effective and immediate
information sharing, it
brings its own set of
problems. Issues with
information theft, virus
attachments, phishing,
worms, and privacy are
well documented and are
very real threats
although, to a certain
extent, these are merely
mirrors of real-world
phenomena that e-mail
merely amplifies and
concentrates. The
question that interests
me the most is whether
e-mail actually increases
or decreases
communication
effectiveness.
I am always in awe of
people who develop
hardware. They're the
real engineers of our
profession, the ones
pushing forward the
speeds at which things
work, their size, and
their connectivity. For
example, in 2005 there
were more computer chips
produced worldwide than
grains of rice harvested
and at a lower unit cost.
Tonight as I was watching
a movie from the 1980s,
instead of dating it by
the big hair and shoulder
pads, the tree rings were
most visible by the size
of the mobile phone the
hero was using, the lack
of a plasma or LCD
wide-screen TV in an
otherwise luxurious
living room, and the
absence of a satellite
navigation device as the
lead characters got lost
following directions from
a map.
The year 2006 marked the
tenth anniversary of the
Java language and for me
is the most significant
in its history. The most
important event was the
announcement that a GPL
version of Java SE will
be available sometime in
the first half of 2007.
If nothing else, all the
back and forth 'will
they, won't they'
discussions over open
source have been a
distraction for the Java
community.
Ted Nelson, inventor of,
among other things,
hypertext, once lamented
that software development
today is at the same
evolutionary stage film
making was at 100 years
ago. Back in the 1900s,
when the technology of
film production was in
its earliest stages, the
cameraman was the person
in charge because he was
the one who understood
the technology and could
make it function
correctly. The audience's
sheer fascination with
the magic of films was
enough to captivate and
hold their attention
while the silent and
blurred subjects grinned
and gawked directly into
the lens. Much has
changed in the last
hundred years though, and
movie directors are now
the ones in charge of
making a film.
Abstraction, as defined
on dictionary.com, is
'considering something as
a general quality or
characteristic, apart
from concrete realities,
specific objects, or
actual instances.' It's a
powerful concept that
underpins software reuse.
When you implement a
problem, if, instead of
starting from scratch,
the scenario can be
thought of as being an
example of an
already-understood
question, its solution
can benefit from existing
implementations.
In 1996, Sun created Java
and the terms under which
it is distributed. Since
then, the Java Community
Process (JCP) has
emerged, allowing
companies to participate
in shaping language
changes, but the
ownership of trademarks,
licensing agreements,
branding, and other
fundamental product
issues remains unchanged.
One is reminded of this
fact every time the Sun
MicrosystemsTM trademark
appears alongside the
Java coffee cup logo, or
when one is greeted with
the message 'brought to
you by Sun Microsystems'
at www.java.com. For
anyone to use the
Java-compatible logo on a
product requires
verification against the
test compatibility kit
(TCK), for which one has
to enter into
negotiations with Sun.
Java, the technology, the
trademark, and the
language, are owned by
Sun.
Computers can generally
be characterized into two
types: ones that are
designed to have more
than one user attached
and those intended for a
single user. In the
beginning almost all
computing was done on
large multi-user
machines, partly due to
their expense, which
precluded their use to
all but large
institutions or wealthy
corporations. Mainframes
ruled this era and
excelled at their role:
providing a reliable
computing platform for
hosting databases,
transaction servers, and
centralized applications.
The interaction was
through character-based
screens that, while
providing fast and
efficient green screen
access, was to be their
Achilles heel.
One of the phrases that
has always puzzled me is
'business logic'. It
seems to crop up a lot in
presentations, articles,
sales pitches and so
forth. The one I saw it
in most recently was a
talk about how great web
servers are because they
keep all of the business
logic on the server where
it can be robust, secure,
and logged. By analogy
the client is a poor
place for business logic
because, while it can do
richer things with the
user interface, all of
the core rules must be
kept on the server.
Back in 1996, Java was
originally hailed as a
way of making the Web
more appealing through
applets, and, with its
'write one, run anywhere'
philosophy, as the holy
grail for desktop apps
that would be truly cross
platform. The truth is
that both were oversold
at the time. With the
combination of low
bandwidth Internet
connections and early
Swing releases not living
up to user expectations
occurring in the middle
of the Microsoft vs. Sun
'pure Java' fight that
resulted in JVMs being
pulled from Internet
Explorer, Java's
attention moved off the
desktop and onto the
server.
Some of the words I dread
most in a meeting are:
'What if ?' They're fine
in the present tense of
'What if a user tries
this option?' or 'What if
the database read fails
mid flight?', but as soon
as the future tense is
introduced I begin to
worry. 'What if the
database and middleware
changes?' or 'What if
sometime soon we don't
just have to run on PCs
but need to work on
mobile phones?' There is
also the future future
tense such as 'What
happens to the UI if the
operating system is
ported to run on a wrist
watch?' or 'What if one
day the company merges
with another whose
corporate standard is MAC
and SNA?'
When someone in a
corporate boardroom
decides what their IT
strategy is going to be,
it isn't based on what
language or software
architecture they will
use, but on how a system
can provide value to
their business. Very few
organizations buy their
hardware and OS first,
and then tool up to write
a bespoke solution that
meets their business
needs. In my first job I
worked for a software
house that built
specialized insurance
applications. Companies
put out tenders for
business that we
responded to, and whether
our products or a
competitors' were chosen
was based on the value
proposition in the
boardroom. The hardware,
platform, and application
server were dragged into
the sale because they
were required by the
solution, but the app was
always the endpoint that
drove the purchase.
In Java's early years,
the language received a
lot of flak from its
opponents over
performance. Java turns
its .class file bytecodes
into machine instructions
(MI) at runtime,
something that costs
cycles and is slower than
a fully compiled language
that creates the MI as
part of the development
stage. While to a certain
extent this is true, the
performance delta has all
but been removed with the
use of just-in-time (JIT)
compilers that cache
machine instructions in
the VM and do other
clever tricks to ensure
the JVM runtime speed has
very little slack. There
was a time when JIT had
to be switched off for
debugging as it
interfered with the
ability to map stack and
heap information back to
the original source.
However, even this is no
longer true in the newer
JVMs that can run in
high-performance debug
modes with no significant
difference between having
-Xdebug there or not.
I have just finished
reviewing the book Open
Source Development Tools
for Java, which provides
excellent coverage of
such topics as log4J,
CVS, Ant, and JUnit.
There is a chapter on UML
tools though in which the
author almost apologizes
for the lack of good open
source design tools.
There is a plethora of
projects on
SourceForge.net from J2EE
runtime frameworks to IDE
plugins, yet there is
almost nothing that
encroaches upward into
the arena of analysis and
design tools.
One way in which
technology is adopted is
when an existing process
is automated and made
more efficient, cheaper,
or reliable. Another is
when a technique or
innovation is applied to
an existing process to
drastically alter the way
it occurs. The
disadvantage of the
latter is that it
requires the idea being
sold to someone who has
to change to adopt it,
and thereby carries a
risk of failure. Applying
a technology to merely
streamline an existing
process is a simpler to
adopt as the
implementation merely
involves oiling an
existing solution.
Allowing extensibility of
a rich Java GUI is a
daunting task. Each user
may require slightly
different functionality -
this one wants to be able
to import data from an
Excel spreadsheet, and
another wants to generate
custom XML reports of
particular artifacts in
the application. You want
to make every user happy,
but you very rapidly see
yourself with multiple
code branches trying to
satisfy those custom
requirements - every Java
developer's configuration
management nightmare.
'If Java is to remain at
the forefront of
technology for the next
10 years,' writes Joe
Winchester in his Java
Developer's Journal
column, 'it needs to find
a way of decoupling API
calls between internal
code and external blocks,
perhaps even introducing
soft typing calls across
program boundaries or
having flexible message
transport across modules.
Paolo Massa is Web-famous
for predicting AJAX
Office would become a
reality within a year.
Now he considers the
Sun-Google announcement
and what it might mean
for the prospects of
OpenOffice and Google
coming preinstalled on
the PCs of the world.
Ask most people on the
street what Java is and
they might tell you it's
an Indonesian island. If
you happen to bump into
some programmers, they'll
probably tell you it's a
language that reads like
C++ but has garbage
collection and a virtual
machine to make it
portable. The connection
is reputedly the
syllogism where the
island gives name to its
coffee, people drink
coffee while surfing the
Web, and Java is the
computer language of the
Web.
Actually I would like to
do something more, for
instance, providing a
toolbar for my
application. First, I add
three buttons with the
same cut, copy, and paste
icons (no text for them,
according to the
Look-and-Feel Design
Guidelines), specifying
the same tooltip text
used for the menu items
(note that I do exactly
what I did before for the
menubar). Then I link the
buttons to the code that
implements their
functionalities (I repeat
my actions again). At the
end I write the code to
disable and enable the
buttons, following the
same criteria used for
the menu items.
The world's first office
computer, known as LEO,
was created in the 1950s
by Lyons, the British
teashop giant. Its aim
was to replace the
thousands of clerks who
did the billing,
invoicing, and
stocktaking, and also
tracked the supply and
demand of sticky buns and
cups of tea that the
public were consuming.
Its success lay not in
the technology it
employed, but because it
made the company more
efficient by streamlining
what was previously a
very labor-intensive
business process. It
benefited Lyons, which
cut costs and had more
control of corporate
information, and it also
benefited the thirsty
public who had enough
cakes, sandwiches, and
cups of tea to see them
through their seaside
weekends, rain or shine.
This article presents a
data model based on a
Collection implementation
that can be used with
Swing components JList
and JComboBox. It also
discusses a method to use
these same concepts in
constructing the user
interface of an
application.
At a presentation a
number of years ago given
by Josh Bloch he made a
comment that Java as a
language hit the 'sweet
spot' of programming. His
metaphor was based around
the fact that the
language was
straightforward to learn
and that rather than
containing many esoteric
coding constructs,
writing and understanding
a Java program was a
relatively easy task.
Experienced developers
know many of the benefits
of and motivations for
using interface-based
design principles.
Interfaces provide for
polymorphic behavior by
hiding the implementation
and only exposing the
relevant public methods
of the implementing
class. What may be less
appreciated is that the
use of interfaces, when
applied to an entire
application, can provide
for application
isolation, while at the
same time enhancing
testing capabilities.
Java has been the
springboard for some of
the most successful open
source projects today
including JBoss,
NetBeans, and Eclipse.
Several folks though have
felt the missing piece
was an actual open source
implementation of the
runtime. Some view Sun's
stewardship of Java and
the JCP as being too
controlling, while others
believe it is an
essential benign rule
that preserves the
integrity of the
language.
This article presents a
Java/Swing component
implementation of a
feature that is
ubiquitous in nearly all
desktop applications,
particularly Windows
applications - an area in
the lower right portion
of a window (Frame) that
can be used to resize the
window.
By David Bismut; Krishnakumar Pooloth; Swaminathan Natarajan
Property files are
frequently used in
systems built using Java
whether it's a thick Java
client, a servlet, or a
business component. Java
specifies the format for
a property file and
provides the Properties
class to read from and
write to these files.
However, Java is silent
on the aspects related to
validations of a value
entered in a property
file, providing room for
errors to creep into an
application system. How
many times have you
started to debug a
failure in an application
only to realize that it's
because of an incorrect
value in a property file?
The problem with defects
is that while they occur,
the cost of finding and
preventing them has a
diminishing return, so
the approach often taken
is that once no more
serious defects can be
found in a test pass, all
that remains must be
minor and the programming
is complete. The whole
act of testing is an odd
part of the software
engineering process,
because the expectation
is that bugs will be
found and then fixed
before the next round of
testing occurs.
I witnessed a recent BOF
conversation in which the
general feeling was that
the browser GUI and its
accompanying plethora of
back-end frameworks had
let people down by
delivering a poor return
on investment and a weak
user-interface
experience.
Tim'O Reilly, the
eponymous publisher,
kicked off EclipseCon
2005 in Burlinghame
earlier this year with an
excellent presentation
titled 'Open source
business models and
design patterns.' As well
as documenting various
failures and successes in
the computing world, one
message that struck a
chord was that to succeed
in open source you must
design for participation.
At a recent presentation
given by a software
engineer from a very
large automotive company,
I gleaned some remarkable
facts:for a particular
car model where the basic
price goes up as the
livery becomes lusher and
the initials on the trunk
longer, half of the
increase in value comes
purely from software. I
had assumed that the
extra greenbacks in the
price came from fancier
music systems combined
with a cool retro
steering wheel and
dashboard fascia;
apparently it just comes
from good old lines of
code.
Since Adobe released the
first public PDF
Reference in 1993, a
number of PDF utilities
and libraries, supporting
all kinds of languages
and platforms, have been
made available to users
and developers alike.
However, support for
Adobe's technology has
lagged in Java
application development.
The key to building a
distributed application
successfully lies in a
sensible partition of
work across the different
boundaries and devices.
With a client/server
program, one of the
advantages it offers over
a more traditional thin
client is that for each
task, instead of having
to wait for the server to
page the application back
into memory, process the
results of the display
buffer, and prepare
output, the PC is able to
offload some of the
validation and processing
locally.
The java.util.TimeZone
abstract class that
represents a time zone is
used to produce local
time for a particular
global time zone. A
TimeZone comprises three
basic pieces of
information: an ID, a
time zone offset, and the
logic necessary to deal
with DST (Daylight
Savings Time).
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