JavaTech, an Introduction to Scientific and Technical Computing with Java

An Introduction to Scientific and Technical Computing with Java

JavaTech is a practical introduction to the Java programming language with an emphasis on the features that benefit technical computing. After presenting the basics of object-oriented programming in Java, it examines introductory topics such as graphical interfaces and thread processes. It goes on to review network programming and develops Web client-server examples for tasks such as monitoring remote devices. The focus then shifts to distributed computing with RMI. Finally, it examines how Java programs can access the local platform and interact with hardware.


 Reviews:

“An excellent Java programming book. Highly recommended.”
Choice

Reference Title: References

Reference Type: reference-list

James Gosling, Java Technology and the Mission to Mars, Sun News, January 16, 2004, www.sun.com/aboutsun/media/features/mars.html
Maestro and the Mars rover data sets are available at http://mars.telascience.org
SensorNet Project, www.sensornet.gov
Aviation Digital Data Service, http://adds.aviationweather.gov/java/
AirportMonitor™, www.passur.com/am_airport.htm
Infrasound viewer, Swedish Institute of Space Physics, Umeå, Sweden, www.umea.irf.se/ilfil/
BioJava, www.biojava.org
Steve Meloan, BioJava – Java Technology Powers Toolkit for Deciphering Genomic Codes, Sun Developer Network, June 2004, http://java.sun.com/developer/technicalArticles/javaopensource/biojava/
Brett McLaughlin and David Flanagan, Java 1.5 Tiger, A Developer's Notebook, O'Reilly, 2004
David Flanagan, Java in a Nutshell, 4th edn, O'Reilly, 2002. (Note: we expect that the 5th edition, covering J2SE 5.0, will be published by the time you read this.)

Reference Title: Resources

Reference Type: bibliography

Calvin Austin, J2SE 1.5 in a Nutshell, May 2004, http://java.sun.com/developer/technicalArticles/releases/j2se15/
Judith Bishop and Nigel Bishop, Java Gently for Scientists and Engineers, Addison-Wesley, 2000
Stephen J. Chapman, Java for Engineers and Scientists, Prentice-Hall, 2000
Richard Davies, Java for Scientists and Engineers, Addison-Wesley, 1999
Ronald Mak, Java Number Cruncher: the Java Programmer's Guide to Numerical Computing, Prentice-Hall, 2003
Grant Palmer, Technical Java: Applications for Science and Engineering, Prentice-Hall, 2003
Java Community Process Program – www.jcp.com
Java resources at IBM Developerworks, www.ibm.com/developerworks/java
Java software development on the Apple Mac, http://developer.apple.com/java/
Java at Sun Microsystems, Inc., http://java.sun.com
Java 2 Standard Edition API Specification, http://java.sun.com/j2se/1.5.0/docs/api/
The Java Tutorial at Sun Microsystems, http://java.sun.com/docs/books/tutorial/

Reference Title: Resources

Reference Type: bibliography

Joseph D. Darcy, What Everybody Using the Java™ Programming Language Should Know About Floating-Point Arithmetic, Sun Microsystems, JavaOne Conference, 2002, http://servlet.java.sun.com/javaone/sf2002/conf/sessions/display-1079.en.jsp
David Flanagan, Java in a Nutshell, 4th edn, O'Reilly, 2002
David Goldberg, What Every Computer Scientist Should Know About Floating-point Arithmetic, Computing Surveys, March 1991, http://docs.sun.com/source/806-3568/ncg_goldberg.html
James Gosling, Bill Joy, Guy Steele and Gilad Bracha, The Java Language Specification, 2nd edn, Addison-Wesley, 2000. Online version at http://java.sun.com/docs/books/jls/second_edition/html/j.title.doc.html
Java 2 Platform, Standard Edition, API Specification, http://java.sun.com/j2se/1.5/api/
Ronald Mak, Java Number Cruncher: The Java Programmer's Guide to Numerical Computing, Prentice Hall, 2003
Glen McCluskey, Some Things You Should Know about Floating-Point Arithmetic, Java Tech Tips, February 4, 2003, http://java.sun.com/developer/JDCTechTips/2003/tt0204.html#2
See also Appendices 1 and 2 for tables of language elements and operators. See Appendix 3 for more about floating-point

Reference Title: Resources

Reference Type: bibliography

Didier H. Besset, Object-Oriented Implementation of Numerical Methods: An Introduction with Java and Smalltalk, Morgan Kaufmann, 2001
Cay S. Horstmann and Gary Cornell, Core Java 2: Vol. 1 – Fundamentals, 6th edn, Sun Microsystems, 2002
Patrick Niemeyer and Joshua Peck, Learning Java, 2nd edn, O'Reilly, 2002
Monica Pawlan, Essentials of the Java Programming Language: A Hands-on Guide, March 1999, http://developer.java.sun.com/developer/onlineTraining/Programming/BasicJava1/
The Java Tutorial, Sun Microsystems, http://java.sun.com/docs/books/tutorial/

Reference Title: References

Reference Type: reference-list

Donald Knuth, The Art of Computer Programming: Semi-numerical Algorithms Volume 2, 3rd edn, Addison-Wesley, 1997
W. H. Press, B. P. Flannery, S. A. Teukolsky and W. T. Vetterling, Numerical Recipes in C: The Art of Scientific Computing, Cambridge, 1992. (Subsequent versions are available for Fortran 90 and C++.)

Reference Title: Resources

Reference Type: bibliography

Ronald Mak, Java Number Cruncher: The Java Programmer's Guide to Numerical Computing, Prentice Hall, 2003

Reference Title: References

Reference Type: reference-list

Java Plug-in, http://java.sun.com/products/plugin/
Javadoc Tool documentation, http://java.sun.com/j2se/1.5.0/docs/guide/javadoc/
Doug Lea, Draft Java Coding Standard, http://g.oswego.edu/dl/html/javaCodingStd.html
Lesson Formatting, The Java Tutorial at Sun Microsystems – http://java.sun.com/docs/books/tutorial/i18n/format/

Reference Title: Resources

Reference Type: bibliography

Formatter class specification, Formatter class specification, http://java.sun.com/j2se/1.5.0/docs/api/java/util/Formatter.html
Java 2 Platform, Standard Edition, API Specification, http://java.sun.com/j2se/1.5/docs/api/

Reference Title: References

Reference Type: reference-list

David M. Geary, Graphic Java 2: Mastering the JFC, Prentice Hall, 1999
Trail: Creating a GUI with JFC/Swing – The Java Tutorial, at Sun Microsystems, http://java.sun.com/docs/books/tutorial/uiswing/
Baldwin, Java 2D Graphics, The Graphics2D Class, Developer.Com, February 9, 2001, www.developer.com/java/other/print.php/626071
M. Stokes, M. Anderson, S. Chandrasekar and R. Motta, A Standard Default Color Space for the Internet – sRGB, 1996, World Wide Web Consortium (W3C), www.w3.org/Graphics/Color/sRGB.html
Jonathan Knudsen, Java 2D Graphics, O'Reilly, 1999

Reference Title: References

Reference Type: reference-list

Lesson: Writing Event Listeners – The Java Tutorial, Sun Microsystems, http://java.sun.com/docs/books/tutorial/uiswing/events/
Lesson: Laying Out Components within a Container – The Java Tutorial, Sun Microsystems, http://java.sun.com/docs/books/tutorial/uiswing/layout/
Trail: Creating a GUI with JFC/Swing – The Java Tutorial, Sun Microsystems, http://java.sun.com/docs/books/tutorial/uiswing/

Reference Title: References

Reference Type: reference-list

Scott Oaks, Henry Wong, Java Threads, 2nd edn, O'Reilly, 1999
Lesson: Threads: Doing Two or More Tasks At Once – The Java Tutorial, Sun Microsystems, http://java.sun.com/docs/books/tutorial/essential/threads/
How to Use Threads in Creating a GUI with JFC/Swing – The Java Tutorial, Sun Microsystems, http://java.sun.com/docs/books/tutorial/uiswing/misc/threads.html
AWT Threading Issues – Java 2 Platform, Standard Edition, API Specification, http://java.sun.com/j2se/1.5/docs/api/
Using the Timer and TimerTask Classes – The Java Tutorial, Microsystems, http://java.sun.com/docs/books/tutorial/uiswing/misc/timer.html
Using Timers to Run Recurring or Future Tasks on a Background Thread, JDC Tech Tips, May 30, 2000, http://java.sun.com/developer/TechTips/2000/tt0530.html#tip2
John Zukowski, Using Swing Timers, JDC Tech Tips, May 21, 2002, http://java.sun.com/developer/JDCTechTips/2002/tt0521.html

Reference Title: References

Reference Type: reference-list

Lesson: I/O: Reading and Writing – The Java Tutorial Sun Microsystems, http://java.sun.com/docs/books/tutorial/essential/io
Elliotte R. Harold, Java I/O, O'Reilly, 1999
java.util.Formatter class specification, java.util.Formatter class specification, http://java.sun.com/j2se/1.5.0/docs/api/java/util/Formatter.html
java.util.Scanner class specification, java.util.Scanner class specification, http://java.sun.com/j2se/1.5.0/docs/api/java/util/Scanner.html
Regular Expression – The Java Tutorial, Sun Microsystems, http://java.sun.com/docs/books/tutorial/extra/regex/
Norbert Lindenberg and Masayoshi Okutsu, Supplementary Characters in the Java Platform, Sun Microsystems, Inc., May 2004, http://java.sun.com/eveloper/technicalArticles/Intl/Supplementary/

Reference Title: References

Reference Type: reference-list

Calvin Austin, J2SE 1.5 in a Nutshell, May 2005, http://java.sun.com/developer/technicalArticles/releases/j2se15/
Brett McLaughlin and David Flanagan, Java 1.5 Tiger, A Developer's Notebook, O'Reilly, 2004
Java 2 Platform, Standard Edition, API Specification, http://java.sun.com/j2se/1.5/docs/api/
Collections Framework, documentation at Sun Microsystems, http://java.sun.com/j2se/1.5.0/docs/guide/collections/
Regular Expressions – The Java Tutorial, Sun Microsystems, http://java.sun.com/docs/books/tutorial/extra/regex/
java.util.regex.Pattern specification, http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html
Java Tutorial: Internationalizations, Sun Microsystems, http://java.sun.com/books/tutorial/il8n/index.html
Ronald Mak, The Java Programmer's Guide to Numerical Computing, Prentice Hall, 2003

Reference Title: References

Reference Type: reference-list

Jonathan Knudsen, Java 2D Graphics, O'Reilly, 1999
Patrick Niemeyer, Jonathan Knudsen, Learning Java, 2nd edn, O'Reilly, 2002
Programmer's Guide to the Java 2D API Enhanced Graphics and Imaging for Java, Sun Microsystems, 2001, http://java.sun.com/j2se/1.4.0/pdf/j2d-book.pdf
Java Image I/O API Guide, http://java.sun.com/j2se/1.5.0/docs/guide/imageio/index.html
The javax.imageio package specifications, http://java.sun.com/j2se/1.5.0/docs/api/javax/imageio/package-summary.html
Java Advanced Imaging (JAI) API, http://java.sun.com/products/java-media/jai/

Reference Title: Resource

Reference Type: bibliography

How to Use Icons – The Java Tutorial, Sun Microsystems, http://java.sun.com/docs/books/tutorial/uiswing/misc/icon.html

Reference Title: References

Reference Type: reference-list

Lesson: Printing in 2D Graphics - The Java Tutorial, Sun Microsystems, http://java.sun.com/docs/books/tutorial/2d/printing/
Playing Sounds - The Java Tutorial, Sun Microsystems, http://java.sun.com/docs/books/tutorial/sound/playing.html
Java Sound Programmer's Guide, Sun Microsystems, 2002, http://java.sun.com/j2se/1.4/docs/guide/sound/programmer-guide/
Java Sound API, http://java.sun.com/products/java-media/sound/
Java Media Framework API, http://java.sun.com/products/java-media/jmf/
Jack Schirazi, Java Performance Tuning, 2nd edition, O'Reilly, 2003

Reference Title: References

Reference Type: reference-list

Trail: Custom Networking – The Java Tutorial, Sun Microsystems, http://java.sun.com/docs/books/tutorial/networking/
E. R. Harold, Java Network Programming, 2nd edn, O'Reilly, 2000

Reference Title: Resources

Reference Type: bibliography

Ian F. Darwin, Java Cookbook, 2nd edition, O'Reilly, 2004
P. Niemeyer and Jonathan Knudsen, Learning Java, 2nd edition, O'Reilly, 2002

Reference Title: References

Reference Type: reference-list

Trail: Custom Networking – The Java Tutorial, Sun Microsystems, http://java.sun.com/docs/books/tutorial/networking/
E. R. Harold, Java Network Programming, 2nd edition, O'Reilly, 2000
P. Niemeyer and Jonathan Knudsen, Learning Java, 2nd edition, O'Reilly, 2002
Budi Kurniawan, How Java Web Servers Work, Aug. 23, O'Reilly's OnJava.com, 2003, www.onjava.com/pub/a/onjava/2003/04/23/java_webserver.html
Security in Java 2 SDK 1.2 – The Java Tutorial, Sun Microsystems, http://java.sun.com/docs/books/tutorial/security1.2/
Permissions in the Java 2SDK Guide, Sun Microsystems, 2002, http://java.sun.com/j2se/1.4.2/docs/guide/security/permissions.html

Reference Title: References

Reference Type: reference-list

Trail: Custom Networking – The Java Tutorial, Sun Microsystems, http://java.sun.com/docs/books/tutorial/networking/
E. R. Harold, Java Network Programming, 2nd edn, O'Reilly, 2000
P. Niemeyer and J. Knudsen, Learning Java, 2nd edn, O'Reilly, 2002

Reference Title: References

Reference Type: reference-list

SETI@Home, http://setiathome.ssl.berkeley.edu
Distributed computing project examples include: the DataGrid Project (http://eudatagrid.web.cern.ch), which seeks to develop scientific data analysis techniques with distributed computing; a decryption project at www.distributed.net; and a climate study at www.climateprediction.net
The Earth Simulator, www.nec.co.jp/press/en/0203/0801.html
Blue Gene, www.research.ibm.com/bluegene/
Terascale Cluster, http://computing.vt.edu/research_computing/terascale/
ORNL – The National Leadership Computing Facility project, www.ccs.ornl.gov/nlcf/
“Department of energy awards $25 million to Oak Ridge National lab to lead effort in building world's largest computer,” ORNL press release, www.ornl.gov/info/press_releases/get_press_release.cfm?ReleaseNumber=mr20040512-00
“DOE leadership-class computing capability for science will be developed at Oak Ridge National Laboratory,” DOE press release, www.energy.gov/engine/content.do?PUBLIC_ID=15871&BT_CODE=PR_PRESSRELEASES&TT_CODE=PRESSRELEASE
The Top 500 List, www.top500.org
PVM (Parallel Virtual Machine) project, www.epm.ornl.gov/pvm
UML Resource Page, www.omg.org/uml/
J. Rumbaugh, I. Jacobson and G. Booch, The Unified Modeling Language Reference Manual, Addison-Wesley, 1998
IBM Rational Software, www.rational.com
E. Gamma, R. Helm, R. Johnson and J. Vlissides, Design Patterns, Addison-Wesley, 1995
S. J. Metsker, Design Patterns Java Workbook, Addison-Wesley, 2002

Reference Title: Resources

Reference Type: bibliography

Model-View-Controller, Design Patterns Catalog, Sun Microsystems, http://java.sun.com/blueprints/patterns/catalog.html
Model-View-Controller Architecture, Fundamentals of JFC/Swing, Sun short course, http://java.sun.com/developer/onlineTraining/GUI/Swing/shortcourse.html

Reference Title: References

Reference Type: reference-list

Ant build tool, http://ant.apache.org
Apache open source server, www.apache.org

Reference Title: Resources

Reference Type: bibliography

Introduction to CORBA, Java Short Course at Sun Microsystems, December 1999, http://java.sun.com/developer/onlineTraining/corba/
Object Management Group, www.omg.org
“Overview of CORBA,” Chapter 11 in: Qusay H. Mahmoud, Distributed Programming with Java, Manning Pub., 2001, http://java.sun.com/developer/Books/corba/ch11.pdf

Reference Title: References

Reference Type: reference-list

JAAS, http://java.sun.com/j2se/1.4.2/docs/guide/security/jaas/JAASRefGuide.html
JCE, http://java.sun.com/j2se/1.4.2/docs/guide/security/jce/JCERefGuide.html
JCA, http://java.sun.com/j2se/1.4.2/docs/guide/security/CryptoSpec.html

Reference Title: References

Reference Type: reference-list

Web services information available at www.w3.org/2002/ws, http://java.sun.com/webservices, and http://msdn.microsoft.com/webservices
XML, www.w3.org/XML
Java and XML Tutorial, http://java.sun.com/xml
XML Namespaces, www.w3.org/TR/xml-names11/
SAX, http://sax.sourceforge.net
DOM, www.w3.org/DOM
JDOM, www.jdom.org
Java Web Services Developer Pack (JWSDP), http://java.sun.com/webservices/jwsdp
JWSDP Tutorial, http://java.sun.com/webservices/downloads/webservicespack.html
Mark Andrews, Story of a Servlet: An Instant Tutorial, Sun Microsystems, http://java.sun.com/products/servlet/articles/tutorial/
Apache Tomcat, http://jakarta.apache.org/tomcat
UDDI, www.uddi.org and www.uddicentral.com
SOAP, www.w3.org/TR/soap/ and http://ws.apache.org/soap
WSDL, www.w3.org/TR/wsdl
JAX-RPC, http://java.sun.com/xml/jaxrpc/index.jsp

Reference Title: References

Reference Type: reference-list

JNI documentation, http://java.sun.com/j2se/1.5.0/docs/guide/jni/
Trail: Java Native Interface – The Java Tutorial, Sun Microsystems, http://java.sun.com/docs/books/tutorial/native1.1/
Sheng Liang, The JavaNative Interface Programmer's Guide and Specification, Addison-Wesley. 1999. Available online at http://java.sun.com/docs/books/jni/
CWYGIN, www.cwygin.com

Reference Title: References

Reference Type: reference-list

Glen McCluskey, Using Runtime.exec to Invoke Child Processes, Core Java Technologies Tech Tips, March 4, 2003, http://java.sun.com/developer/JDCTechTips/2003/tt0304.html
javax.comm for Windows and Solaris platforms, http://java.sun.com/products/javacomm/
javax.comm for Linux, www.rxtx.org
jUSB – open source USB support for Linux, http://jusb.sourceforge.net
Elliotte Rusty Harold, Java I/O, O'Reilly, 1999
Ian F. Darwin, Java Cookbook, 2nd edition, O'Reilly, 2004
Christopher E. Strangio, The RS-232 Standard: A Tutorial with Signal Names and Definitions, CAMI Research, 2004, www.camiresearch.com/Data_Com_Basics/RS232_standard.html

Reference Title: Resources

Reference Type: bibliography

Craig Peacock, Interfacing the Serial and RS-232 Port, 2001, www.beyondlogic.org/serial/serial.htm
SerialPort – Commercial software from www.serialio.com
Al Williams, Embedded Internet Design, McGraw-Hill, 2003

Reference Title: References

Reference Type: reference-list

Java Card at Sun Microsystems, http://java.sun.com/products/javacard/
Kim Topley, J2ME in a Nutshell, 2002, O'Reilly
KVM Porting Guide, CLDC, Version 1.1, Java™ 2 Platform, Micro Edition, Sun Microsystems, Inc., March 2003
Tim Lindholm and Frank Yellin, The Java™ Virtual Machine Specification, 2nd Edn, Sun Microsystems, Inc. 1999, http://java.sun.com/docs/books/vmspec/
Peter C. Dibble, Real-Time Java Platform Programming, Sun Microsystems, Inc., 2002
Greg Bollella, Greg Bollella on Controlling Physical Systems with Real-time Specification for Java: Combining Real-time and Non-real-time Operations on a Single Processor, System News, Vol. 75, Issue 4, May 24, 2004, http://sun.systemnews.com/articles/75/4/feature/13057
Brian Goetz, Java Theory and Practice: A Brief History of Garbage Collection, IBM Developer Works, 2003, www-106.ibm.com/developerworks/java/library/j-jtp10283/
Tuning Garbage Collection with the 1.4.2 Java[tm] Virtual Machine, Sun Microsystems, Inc. 2003, http://java.sun.com/docs/hotspot/gc1.4.2/
NewMonics, Inc., Tucson, AZ, www.newmonics.com
aicas GmbH, Karlsruhe, Germany, www.aicas.com
JSR 1: Real-time Specifications, Java Community Process, www.jcp.org/en/jsr/detail?id=1
Sione Palu. Real-time Specification for Java (RTSJ), www.developer.com/java/article.php/1367671
TimeSys Corp., Pittsburgh, PA, www.timesys.com
aJile Systems, Inc, San Jose, CA, www.ajile.com
Imsys Technologies, Upplands Väsby, Sweden, www.imsystech.com
Parallax, Inc., Rocklin, CA, www.parallax.com
Javelin Stamp resources available at www.parallax.com/javelin/
Nazomi Communications, Santa Clara, CA, www.nazomi.com
Aurora VLSI Inc., Santa Clara, CA, www.auroravlsi.com
ARM Computer, Cambridge, UK, www.arm.com
Synopsys, Mountain View, CA, www.synopsys.com
Xilinx, San Josa, CA, www.xilinx.com
Digital Communication Technologies Ltd. (DCT), Middlesex, UK, www.dctl.com. (DCT has merged with Velocity Semiconductor, www.velocitysemi.com.)
Peter Clarke, Startup builds Java processor with ARC core, EE Times, September 17, 2001, www.commsdesign.com/news/product_news/showArticle.jhtml?articleID=16503516
Vulcan Machines Ltd, Royston, UK, www.vulcanasic.com
Dallas Semiconductor is owned by Maxim Integrated Products, Sunnyvale, CA, www.maxim-ic.com/TINIplatform.cfm
TINI™ official web site, www.ibutton.com/TINI/
Dan Eisenreich and Brian DeMuth, Designing Embedded Internet Devices, Newnes, 2003
Smart Software Consulting, unofficial TINI information site, www.smartsc.com/tini/
Al Williams, Embedded Internet Design, McGraw-Hill Education, 2003
Don Loomis, The TINI™ Specification and Developer's Guide, Addison-Wesley, 2001. Available on line at: www.maxim-ic.com/products/tini/pdfs/tinispec.pdf
Systronix, Salt Lake City, UT, www.systronix.com
Embedded Microprocessor Benchmark Consortium (EEMBC), www.eembc.hotdesk.com
Pendragon Software, Libertyville, IL, www.pendragon-software.com
The Volano report and benchmark tests, www.volano.com/benchmarks.html
Hosseyn Karimi Garari and Daryoush Mansouri, Radiation Surveillance by Unmanned Aerial Vehicle (UAV), Diploma Work, Physics Dept., Royal Institute of Technology, 2003
David Sikter, Benchmarking and Feasibility Study of the aJ100tm Java Processor in a Real-Time Image Processing Application, Diploma Work, Physics Dept., Royal Institute of Technology, 2002

Reference Title: Resources

Reference Type: bibliography

Joseph D. Darcy, What Everybody Using the JavaProgramming Language Should Know About Floating-Point Arithmetic, Sun Microsystems, JavaOne Conference, 2002, http://servlet.java.sun.com/javaone/sf2002/conf/sessions/display-1079.en.jsp
David Flanagan, Java in a Nutshell, 4th edn, O'Reilly, 2002
David Goldberg, What Every Computer Scientist Should Know About Floating-Point Arithmetic, Computing Surveys, March 1991, http://docs.sun.com/source/806-3568/ncg_goldberg.html
James Gosling, Bill Joy, Guy Steele, and Gilad Bracha, The Java Language Specification, 2nd edn, Addison-Wesley, 2000. Available online at: http://java.sun.com/docs/books/jls/second_edition/html/jTOC.doc.html
Ronald Mak, Java Number Cruncher: The Java Programmer's Guide to Numerical Computing, Prentice Hall, 2003
Glen McCluskey, Some Things You Should Know about Floating-Point Arithmetic, Java Tech Tips, February 4, 2003, http://java.sun.com/developer/JDCTechTips/2003/tt0204.html#2