| 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.   Outline 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 courseTopic 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. |