Java and High Performance Computing

Tutorial Conducted at

HICSS-32, Hawaii, USA


Rajkumar Buyya, School of Computer Science & Software Engineering, Monash University, Australia.
Ira Pramanick, Sun Microsystems, USA.

Level of Presentation: 50% Begineer, 30% Intermediate, 20% Advanced

Expected audience:

Students, Academics, Application (sequential and parallel/distributed) programmers, System designers, and concurrent programming interface developers.

This fullday tutorial will be covered in two parts as follows: PART A: Java Basics and Programming PART B: Parallel and Distributed Computing using Java

PART A: Java Basics and Programming
Today, the key areas of computing are the Internet, Intranets, the World Wide Web (WWW), and of course, a new programming language well-suited to the network environment is the Java. In the span of just one and half year, Java has risen from an experimental language to be the Internet programming language. Java is a new object oriented language developed by Sun Microsystems, which allows to develop stand alone programs, as well as, WWW applications. The most important things of the Java language is that it makes a Web page alive; making them more interactive.

The question naturally arises: How does Java makes all this possible?; How is this different from traditional programming languages?; Is this offers a com- pletely different programming paradigm?; How one can make a Web live and inter- act, and what are its implications? This tutorial offers answer to all these questions and will also go beyond the hype. This tutorial will: introduce the Java programming language and explain the concepts such as high performance (computing), networking (communication), and imaging integrated into it. This tutorial will also covers both strengths and weaknesses of Java; show with simple examples how Java can be used on the WWW and how one can take advantage of it; and demonstrate Javas greater potential with a discussion of selected non-WWW applications (such as mutithreaded servers) for which Java provides unique capabilities.

PART B: Parallel and Distributed Computing Using Java
The popularity of the Java language has exploded in the past few years, with representatives from various disciplines actively participating in its rapid growth. Java takes the promise of parallel processing and distributed computing a step further, by providing a portable programming language that can be used on any machine or combination of different machines that support Java. Additionally, it can be used seamlessly on the web. Java is itself multithreaded, and has several models of parallel programming and distributed computing at different levels of abstraction, allowing the user to choose the model suited to the level of detail they desire and the effort they are willing to spend to learn the model. It offers these various layers through its very well defined object-oriented classes, that are fairly straightforward to use.

Many are attracted by Java's promise of "Write Once, Run Anywhere" slogan. This first half of this tutorial (abstract above) will focus on the basics of Java that make the above slogan true, and then move on to cover those aspects of Java relevant to its parallel and distributed programming capabilities. It will first discuss support for parallel processing (using multiple CPUs of a single machine) in Java through its threads model, and then move on to the topic of parallel and distributed computing using several machines on a network. It will cover the entire spectrum of this topic, from using core Java classes such as the Socket and URL classes, to the Remote Method Invocation facility. Programming examples will be provided for each major topic. The tutorial will also touch upon the latest Java facilities such as JavaBeans, JDBC and JNI.

Java and High Performance Computing

Java and Internet

1. Internet, Web, and Java
2. Object Oriented Paradigm
3. Moving from C++ to Java (Java at a Glance)

Java Nuts and Bolts

4. Java Foundations
5. Control Flow
6. Arrays and String
7. Classes and Objects
8. Object Initialization and Cleanup
9. Inheritance
10. Abstract Classes Packages, Classes, and Interfaces
11. Exception Handling
12. Input and Output Streams
13. Applets

Advanced Concepts

14. Multithreading
15. Graphic Programming
16. Network Programming
17. Distributed Programming
18. Web Building and Social Issues

Parallel and Distributed Computing using Java

19. Introduction
20. Parallel Processing/Multithreading in Java
21. Distributed Java programs
22. Java Socket classes
23. Java URL classes
24. Remote Method Invocation
25. JNI and JavaBeans

Presentation Slides

Introduction to Java

Download Java for HPC Tutorial

Speakers Bio-Sketch

Rajkumar Buyya is a Research Scholar at the School of Computer Science and Software Engineering, Monash University, Melbourne, Australia. Prior to joining Monash, he worked at Queensland University of Technology in Brisbane during 1998, Centre for Development of Advanced Computing from 1995 to 1998, Bangalore, India; and at Applied Computer Technologists, Bangalore, India from 1992 to 1994. He also served as a visiting faculty member for the Bangalore University from 1995 to 1998. As a reporter he writes for Asian Technology Information Program, Japan/USA. He has coauthored the books Microprocessor x86 Programming (BPB Publications, '95) and Mastering C++ (Tata McGraw Hill Publications, '97). He is an associate editor of the PDPTA'97 and PDPTA'98 International Conference Proceedings, USA. Currently, he is editing a book entitled High Performance Cluster Computing (Prentice Hall, NJ, USA, 1998), which appears in two volumes. He is a guest editor for a special issue of Parallel and Distributed Computing Practices Journal.

Rajkumar was awarded Dharma Ratnakara Memorial Trust Gold Medal for his academic excellence during 1992. He has been selected as a Speaker in the IEEE Computer Society (USA) Chapter Tutorials Program for 1999-2001. He has also been appointed as the Chair of the newly formed IEEE CS Task Force on Cluster Computing.

Rajkumar has delivered/delivers tutorials on advanced technologies such as Parallel, Distributed and Multithreaded Computing, Client/Server Computing, Internet and Java, Cluster Computing, and Java and High Performance Computing at HPC ASIA'97, Seoul, Korea; HiPC'97, Bangalore, India; NCS'98, Pittsburgh, USA; CATE'98, Cancun, Mexico; ASC'98, Cancun, Mexico; AUUG'98, Sydney, Australia; HPC ASIA'98, Singapore; PDCN'98, Brisbane, Australia; and HICSS-32, Hawaii, USA International Conferences. He served/serves on program committee of international conferences and organised workshops/special sessions at major international conferences. His research papers have appeared in international conferences and journals. His research interests include Programming Paradigms and Operating Environments for Parallel and Distributed Computing.

Ira Pramanick received her B.Tech.(Hons.) in Electrical Engg. from IIT Kharagpur, India in 1985, and her Ph.D. in Electrical & Computer Engg. from the University of Iowa in 1991. She was an Asst. Professor in the ECE Dept. at the University of Alabama in Huntsville from 1991 to 1992. She worked for IBM Corporation as an Advisory Engineer from 1992 to 1995, and joined Silicon Graphics in 1995 where she worked for the Strategic Software Division. Dr. Pramanick's research interests include parallel processing and distributed computing, highly available systems, algorithms and applications. She has served on the program committee for the IEEE International Symposium on High Performance Distributed Computing from 1994-97, and has chaired several technical sessions at HPDC, ICPP and SECON. She is a holder of three US Patents.