Java and High Performance Computing
Tutorial Conducted at
Speakers
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.
Abstract:
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.