| News from National -- Current Articles  6/21/2002
  7:53:09 AMJAVA 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 tableWorry 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 doArrogance  you don't
       know everything and can always learn something newLaziness  shortcuts
       will always come back to bite youLack 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 patternsNot attending training
       courses to gain extra knowledgeUsing the same
       technology for every project rather than choosing the most suitable
       technology for each problemEating 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 BrooksExtreme Programming Explained
        Kent BeckRefactoring  Martin
       FowlerProgramming Pearls 
       Jon BentleyThe 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.
   |   |