Home : Course Description
About JavaTech
Course Map
     About JavaTech
     Codes List
     Topic Index
     Course Guide
     What's New

The JavaTech Web Course provides an introduction to the Java programming language along with a selection of more advanced topics, such as using Java for networking and embedded applications. We emphasize how Java can benefit scientific and other technical computing tasks.

We use an example based teaching approach and provide lots of program as applets and standalone applications.

The companion book JavaTech: Topics in Scientific and Technical Computing with Java will be published in 2005 by Cambridge University Press. To distinguish the book from the online materials here, we typically refer to the website as the Web Course.


The goal for the Web Course is to allow you to choose from an array of optional tracks that provide different topics and different levels of detail according to your particular interests and background.

We organize it along the lines of a course or series of courses. (The extent of the material here is more than would normally be covered in a single course.) As shown by the Course Map, JavaTech is divided into three main parts:

  • Part I provides an introduction to Java along with a set of supplemental information. The materials within Part I are arranged into tracks (more detail in Part I below), that cover Java basics and supplementary topics, technical computing, and physics.

    Tools and techniques from the new Java 5.0 version are included.

  • Part II examines networking programming and distributed computing with Java.

  • Part III focuses on how Java can interact with the local platform and with hardware such as the serial port. The last chapter looks at Java for small platforms and embedded applications, and surveys processors that implement Java directly.

Most of the Java for Scientists and Engineers types of books (ref.) basically combine an introduction to Java with a numerical analysis course. While we will discuss a number of numerical algorithms and use them in examples, particularly in the Physics track, we do not try to systematically teach numerical analysis (or computational physics as its now called when applied to physics problems.)

Instead, we concentrate on how Java can help scientists and engineers carry out a variety of tasks in addition to purely numerical computations. For example, a simulation of an experimental setup can take advantage of Java graphics, multi-threading and other capabilities. Or if a computation requires multiple processors, we look at how to use Java to do distributed computing.

Part I

The Part I materials are organized into basic areas or tracks:

  • Java - the essentials for learning the language. Supplementary material of both tutorial and more advanced is included.

  • Tech - additional material on using Java for general technical computing applications.

  • Physics - additional material on the use of Java in physics.

The Java track includes the Core area with the basics of the lanugage. The Supplements area ranges from additional introductory level discussions on some topics to discussions of more advanced topics.

For example, someone with no experience in object oriented programming (OOP) can refer to a more basic explanation of objects to help scale the steep learning curve involved with OOP.

On the other hand, someone who has programmed in C++ can refer to the more advanced section where there is a discussion of the differences between Java and C++ and a detailed examination of the Java Virtual Machine.

The Tech track provides those in science and engineering with discussions of relevant topics such as the capabilities of the Math class, how to format numbers in scientific notation, using Java for various numerical computation examples, and so forth.

The Physics track discusses topics of particular interest to physicists and includes more about numerical analysis. Combined with the Java and Tech materials, it forms the basis of an undergraduate physics course on programming with Java to create simulations of physical phenomena.

All the tracks include many demonstration applets and application programs.

Part II

Part II examines network and distributed computing applications with Java. The core set of Java packages includes a strong array of tools for building network applications such as Web client/server systems.

We begin with an introduction to network concepts in Chapter 13. In Chapters 14 and 15 we develop custom Web server and client applications using socket-based communications techniques. These example programs illustrate how you could use client/servers to monitor and control remote devices, such as an array of sensors, or to interact with a simulation or other program run by a central server.

Chapters 16-20 deal with distributed computing using Java RMI (Remote Method Invocation) or CORBA. Distributed computing allows a program to run on multiple platforms simultaneously. With RMI a Java program on one machine can invoke a method in an object on another machine just as if it were running on the same platform. Java serialization allows objects to be transported back and forth just like primitive type data.

With these tools you can, for example, have a server program directly interact with client programs rather than, say, exchanging HTML commands as with a Web client/server.

To assist with the development of distributed computing codes, we introduce UML (Unified Modelling Language) for building classes and illustrating the interactions between objects. UML has become a powerful and popular approach to good object oriented program design and analysis.

Chapter 21 discusses Web Services. This is becoming a popular approach for network applications. It uses a Web client/server type of system in which data is exchanged in XML format.

Part III

Part III looks at ways that Java can interact with the local platform. Chapter 22 presents JNI (Java Native Interface) in which a Java program can link with a C/C++ program. This removes platform portability but allows a Java program to take advantage of existing legacy code in C/C++ or in other languages such as Fortran via intermediate C code.

Chapter 23 looks at several topics including how to access information about the platform and how to run external programs from within Java. Most of the chapter deals with how Java can communicate over the serial port.

Chapter 24 focuses on embedded applications with Java and hardware Java processors. Brief overviews of the Java Micro Edition and of Real-Time Java are presented. A survey is made of processors that directly execute Java bytecode. A demonstration program that runs on a Javelin Stamp module to obtain temperature sensor data is given (it communicates with the Java desktop via the serial line techniques discussed in Chapter 23.) Also, a Imsys Technologies SNAP board is programmed to run a server program that obtains solar panel voltage data.

Keeping Track

The Course Map illustrates the progression of topics presented in the course.

Refer to this table frequently as you work through the course to keep a clear view of where you are in your progress through the material.

Helper Pages

The following pages provide links to find particular materials in the course.

  • Course Map - outline of course
  • Topic Index - index with links to topics in the course.
  • Code Index - index with links to programs in the course.
  • Exercises - index to the exercises in the course.
  • Resources - links to Java related sites on the Web.

  Part I Part II Part III
Java Core 1  2  3  4  5  6  7  8  9  10  11  12 13 14 15 16 17
18 19 20
22 23 24

1  2  3  4  5  6  7  8  9  10  11  12

Tech 1  2  3  4  5  6  7  8  9  10  11  12
Physics 1  2  3  4  5  6  7  8  9  10  11  12

Java is a trademark of Sun Microsystems, Inc.