News from National -- Current Articles
6/21/2002
7:53:09 AM
JAVA Expert Martin Bond
Interview by S. Ibaraki, I.S.P.
This week, Stephen Ibaraki, I.S.P., has an exclusive interview with,
Martin Bond, B.Sc. M.Sc. C.Eng. M.B.C.S., one of the key authors of SAMS
Teach Yourself J2EE in 21 Days with EJB, JSP, Servlets, JNDI, JDBC, and XML.
Martin, who has an honours degree and a masters degree in computer science,
is also a European chartered engineer. Martin has developed parallel
processing compilers for Inmos and he has designed systems using C++, Java,
JavaScript plus he has developed training courses on Unix programming, Solaris
security, Java programming and XML.
Martin is an international expert in application development, deployment,
consulting, training, and technical writing. We were able to catch Martin at
Content Masters Ltd., a technical authoring company in the UK specializing in
the production of training and educational materials - http://www.contentmaster.com
Discussion:
Q: Your combined accomplishments are staggering. Thank you for agreeing to
this interview.
A: My pleasure.
Q: I reviewed your most informative and useful book. What led you to write
this masterful work?
A: I wouldn't describe it as masterful; large certainly, but then J2EE is a
large subject. I was contacted by Content Master to see if I was interested
in contributing to a book about J2EE. As I have previously written training
courses and white papers I was interested in extending my writing skills to
include a book; and J2EE is a subject I teach on training courses. The
request also coincided with a quiet period in my schedule allowing me to take
on 4 or 5 of the chapters at very short notice.
Q: What ten or more tips can you provide from the book and about developing
in the Java space?
A: They are:
- Keep learning through
reading and training courses. Java is continually developing and there
is always something new to learn.
- Consider
multi-threading issues carefully, especially with servlets and JSPs. A
large number of sporadic and hard to reproduce bugs can usually be
traced to multi-threading problems. Most developers do not understand
how to use multi-threading and are unaware of the problems of sharing
data (objects) across more than one thread.
- Design in exception
handling from the start; don't add it on when the compiler refuses to
compile your code because you haven't put a try/catch block around a
method call. Plan where you will catch and recover from thrown
exceptions in your method call hierarchy, and propagate errors back to
these known recovery points.
- Don't expose entity
beans to clients. Always hide them behind session beans.
- Use session beans to
enforce business rules and entity beans to enforce data integrity rules.
- I hate to say this but
I don't think entity beans are very useful at the present time and I
personally would rather use Data Access Objects and connection pooling
to access a database directly rather than use entity beans.
- Use entity beans as an
in memory cache for readonly data such as lookup tables.
- Make more use of JNDI
for storing information rather than use yet another database table
- Worry about data
security (integrity and confidentiality).
- Worry about
performance, all these RMI method calls and proxy/adapter objects
seriously affect performance.
Q: How would you contrast enterprise development in Java versus .NET and is
there a winner? What do you see for the future of both development
environments?
A: Like many developers I have concerns about the security of .NET and the
tendency for Microsoft to change the standard every 18 months or so. In many
ways .NET is a rebranding of existing technologies such as DCOM with minor
(or major) API changes together with useful new features. However the
proliferation of languages (C++, VB, C# and now J#) must be causing problems
in many development groups with respect to skill shortages and choosing which
language to use.
The .NET platform ties the developer to a single platform (WinTel) but this
can be an advantage as it takes away many of the hardware/software
manufacturer and product architecture issues that have to be decided in an
open systems environment. The development tools provided with .NET are the
best in the industry and certainly improve developer productivity.
J2EE is open and whilst Sun control the Java and J2EE standard there are a
large number of partners (IBM, BEA, Netscape, etc.) that act as a controlling
influence that prevents Sun from making radical changes. Even though J2EE is
standard there are still grey areas around the edge of the standard that
allow different vendors to add value. The ability to choose from one of many
vendors gives the developer a choice that will help keep all the vendor's
honest with regard to pricing and licensing. Having free to use J2EE servers
such as JBoss makes J2EE accessible to cost conscious users.
Performance, reliability and scalability are an issue for enterprise systems
and here I think there are some differentiators. The .NET platform uses
native machine code and must therefore be faster than the interpreted byte
codes of Java. A good JVM (such as HotSpot from Sun Microsystem's) will
improve the performance of Java to be close to native code, but it is
unlikely to ever match it. However raw processor speed is less of an issue
these days given the incredible speeds of modern processors. Unless an
application is heavily into number crunching then disk and network I/O
performance is usually the limiting factor. Having said that, many data
encryption and multi-media manipulation algorithms require CPU intensive
operations. Reliability depends on the underlying platform and I believe Unix
and Linux are more reliable than NT (2000 or XP). I personally would be wary
of running a critical enterprise system on an NT platform.
I see a future for both platforms. I think .NET with its good development
tools supports rapid application development, and is useful for systems that
are constantly changing and are not essential. I think J2EE is more
applicable to mission critical systems that have a long lifetime and whose
requirements do not change too rapidly. I think the success or failure of the
technologies will be affected more by external criteria than the internal
architectural merits of the products. I'm thinking of things like development
tools, administrative tools and licensing/cost issues. I wonder how many .NET
users are evaluating J2EE because of the new XP licensing scheme?
Q: Describe future book titles and articles that we can expect from you?
A: Myself and Debbie Law are working on a book on Jakarta Tomcat for a new
SAMS series (the name has yet to be finalized). This is due to be published
in Nov 2002 and will cover Servlet/JSP development techniques, Tomcat
administration and some of the Jakarta tools like Struts and Cactus.
Q: Can you describe some of the projects that you have worked on and what
tips you can pass on?
A: My last commercial project was a simple time recording system written
using servlets (this was before JSPs were available). It took longer than I
planned. With hindsight, I wish I had been able to use JSPs and had put more
effort into the design. A couple of years ago (for my own interest) I wrote a
simple Java MIDI system that allows me to write and playback classical guitar
music. I learnt a great deal about Java design and implementation writing the
program but I wish I had understood Java idioms and design patterns better;
but learning how to design and write Java code was one of the reasons for the
project. I have recently started another version of the program utilizing a
better overall design (I decided I couldn't refactor the original code), one
day I might release the program as shareware or freeware (if I ever finish
it).
Q: What are ten or more traps or pitfalls that developers should be wary of
and avoid?
A: They are:
- Complacency you can
always improve on what you do
- Arrogance you don't
know everything and can always learn something new
- Laziness shortcuts
will always come back to bite you
- Lack of testing
- Coding without
thinking. Design first, code second.
- Reinventing the wheel
learn the standard Java classes (especially the java.test amd
java.util packages) and use provided functionality rather than write
your own class. Look on the web at sites such as JARS (www.jars.com),
Jakarta (jakarta.apache.org), Source Forge (www.sourceforge.com) and
Alphaworks (alphaworks.ibm.com) for open source packages that will do
what you want.
- Not understanding and
using design patterns
- Not attending training
courses to gain extra knowledge
- Using the same
technology for every project rather than choosing the most suitable
technology for each problem
- Eating too much pizza
Q: Can you share your leading career tips for those thinking of getting into
the computing field?
A: They are:
- Get a formal IT
education first as what you learn at school/college will help in the
future even if you can't apply it immediately.
- Look at the job
specification rather than the salary. A more interesting job will be
more rewarding; higher salaries come with time and experience.
- Expect to work long
hours. Even if you are not in the office working you will have to spend
time keeping abreast with the new technology.
- Don't expect to learn
everything and then be able to sit back and relax. After 25 years in the
industry I am always learning something new.
- Be prepared to have
people corner you at parties and bore you with tales of their PC
hardware statistics or horrors stories of software problems.
Q: What are the hottest topics that all IT professionals must know to be
successful in the short term and long term?
A: That changes on a regular basis. In 1997 Data Warehouses, SAP, Design
Patterns and C++ were hot, Java was lukewarm, .NET didn't exist and Linux was
seen as a student/university toy.
These days I think .NET, J2EE and Security are the hot topics.
Long term I think security and digital certificates will become more widely
used and Linux will gain ground at the expense of both Windows/XP and
Solaris. I expect Java and .NET to remain hot for at least 3 years more.
Q: What would be your recommended top ten references for the serious
developer?
A:
1-8) The web. There is so much out there that you can nearly always find the
answer to your problem. Books are good but given the fast changing nature of
IT most books are out of date after 2 years.
9) The javadocs for product APIs
10) I would advise developers to read the following books for widening their
knowledge rather than adopting the practices (such as XP) that are covered.
- The Mythical Man Month
Fred Brooks
- Extreme Programming Explained
Kent Beck
- Refactoring Martin
Fowler
- Programming Pearls
Jon Bentley
- The Elements of Java
Style.
It is out of print now but I regard The Elements of
Programming Style Kernigan and Plauger, as the best book on thinking about
and writing software (it made me rethink how I wrote code).
Q: If you were doing this interview, what three questions would you ask of
someone in your position and what would be your answers?
A: Why did you get into IT?
It was easier than Physics and Math which was my initial degree subject.
What do you enjoy the most?
The hands on technical work and passing on my knowledge. I am an educator
(trainer, course writer, book writer) because it lets me evaluate and use the
latest technologies.
What do you dislike the most?
Maintaining someone else's code (or mine for that matter).
Q: Its a blank slate, what added comments would you like to give to
enterprise corporations and organizations?
A: Invest more in your staff in the form of training and career paths. Many
developers move into management to get a higher salary rather than a desire
to be a manager. Provide a career path for good developers to remain hands on
whilst earning a higher salary. Management is a separate career path
requiring different skills and there is no necessity for a manager to have a
higher salary than the staff they manage.
Q: Thank you for sharing your valuable insights with us today and we look
forward to reading your books, and articles.
A: Thank you.
|
|