Date post: | 04-Jan-2016 |
Category: |
Documents |
Upload: | janel-gaines |
View: | 215 times |
Download: | 1 times |
1
OAK RIDGE NATIONAL LABORATORYU. S. DEPARTMENT OF ENERGY
Java Pros and Cons − Roundtable
American Nuclear Society
Annual Meeting
June 16, 2004 Pittsburgh, PA
2
OAK RIDGE NATIONAL LABORATORYU. S. DEPARTMENT OF ENERGY
Java – an Object-Oriented Programming Language
Based on objects: data and methods together
Four Concepts: Abstraction – describes physical world Encapsulation – data and methods together Inheritance - just like something else but ... Polymorphism – method overloading
3
OAK RIDGE NATIONAL LABORATORYU. S. DEPARTMENT OF ENERGY
Abstraction / Encapsulation public class Particle {
Position position;
Direction direction;
double energy;
public Particle(){
position = new Position(0, 0, 0);
direction = new Position(1, 0, 0);
energy = 1.0;
}
public void move(double distance){
position.move(direction, distance);
}
public void scat(double t, double p){
...
}
}
public class Position {
double x, y, z; public Position(double a, double b, double c){ x = a; y = b; z = c; }
public void move(Direction d, double dis){ x = x + d.u*dis; y = y + d.v*dis; z = z + d.w*dis; }
public double howFarTo(Position p){ double answer = (p.x-x)*(p.x-x) + (p.y-y)*(p.y-y) + (p.z-z)*(p.z-z); answer = Math.sqrt( answer ); return answer; }}
4
OAK RIDGE NATIONAL LABORATORYU. S. DEPARTMENT OF ENERGY
Inheritance (1/2)
public class ChargedParticle extends Particle {
double restMass; int charge;
// Physical Constants static double ELEMCHARGE = 1.60217733e-19; // Coulombs static double RESTMASSKG = 9.1093897e-31; // kg static double RESTMASS = 0.511; // MeV static double ERADIUS = 2.81792e-15; // meter
public ChargedParticle(){ super(); restMass = ChargedParticle.RESTMASS; charge = -1; }
public double getSpeed(){ double speed = ... (energy-restMass) ... return speed; }
}
5
OAK RIDGE NATIONAL LABORATORYU. S. DEPARTMENT OF ENERGY
Inheritance (2/2)
public class Photon extends Particle {
// Physical Constants static double speedOfLight = 299792458.0; // m/s static double planckConstant = 6.6260755e-34; // Joule seconds
public Photon(){ super(); }
public Particle[] comptonScatter(){ Particle[] answer = new Particle[2]; // photoelectron answer[0] = new ChargedParticle(...);
// scattered photon answer[1] = new Photon(...);
return answer; }}
6
OAK RIDGE NATIONAL LABORATORYU. S. DEPARTMENT OF ENERGY
Polymorphismpublic class Particle {
Position position; Direction direction; double energy; public Particle(){ position = new Position(0, 0, 0); direction = new Position(1, 0, 0); energy = 1.0; } public Particle(Position p, Direction d, double e){ position = p direction = d; energy = e; }
public Particle(Particle p){ position = p.position; direction = p.direction; energy = p.energy; }
}
7
OAK RIDGE NATIONAL LABORATORYU. S. DEPARTMENT OF ENERGY
Java Pros Free, freely distributable Portable – “Write once, run anywhere” Internet savvy Extensive libraries – database, GUI,
networking, etc. Language – strongly typed, array indices
are checked, automatic garbage collection, Threads, Exceptions
*.jar files – Java archive, runnable
8
OAK RIDGE NATIONAL LABORATORYU. S. DEPARTMENT OF ENERGY
Java Cons Interpreted
9
OAK RIDGE NATIONAL LABORATORYU. S. DEPARTMENT OF ENERGY
10
OAK RIDGE NATIONAL LABORATORYU. S. DEPARTMENT OF ENERGY
11
OAK RIDGE NATIONAL LABORATORYU. S. DEPARTMENT OF ENERGY
12
OAK RIDGE NATIONAL LABORATORYU. S. DEPARTMENT OF ENERGY
13
OAK RIDGE NATIONAL LABORATORYU. S. DEPARTMENT OF ENERGY
14
OAK RIDGE NATIONAL LABORATORYU. S. DEPARTMENT OF ENERGY
15
OAK RIDGE NATIONAL LABORATORYU. S. DEPARTMENT OF ENERGY
16
OAK RIDGE NATIONAL LABORATORYU. S. DEPARTMENT OF ENERGY
17
OAK RIDGE NATIONAL LABORATORYU. S. DEPARTMENT OF ENERGY
18
OAK RIDGE NATIONAL LABORATORYU. S. DEPARTMENT OF ENERGY
Java 1.5 “Tiger”
Generics - no casting, errors at compile time, not runtime
Enhanced for Loop Autoboxing/Unboxing -
collections of primitive data types
Formatted Output - more like C or FORTRAN
New JVM Profiling API Improved Diagnostic
Ability - getStackTrace, Thread.getAllStackTraces
private void printCollection(Collection c) { Iterator<String> i = c.iterator(); while(i.hasNext()) { String item = i.next(); System.out.println("Item: "+item); }}
public void newFor(Collection<String> c) { for(String str : c) { System.out.println(str); }}
System.out.printf("%s %3d", name, age);
19
OAK RIDGE NATIONAL LABORATORYU. S. DEPARTMENT OF ENERGY
Sun Microsystems, Inc.Binary Code License Agreement
for theJAVATM 2 SOFTWARE DEVELOPMENT KIT (J2SDK),
STANDARD EDITION, VERSION 1.4.2_X
3. RESTRICTIONS. ... You acknowledge that Licensed Software is not designed or intended for use in the design, construction, operation or maintenance of any nuclear facility. ...
20
OAK RIDGE NATIONAL LABORATORYU. S. DEPARTMENT OF ENERGY
Sun Microsystems, Inc.Binary Code License Agreement
for theJAVATM 2 SOFTWARE DEVELOPMENT KIT (J2SDK),
STANDARD EDITION, VERSION 1.4.2_X
3. RESTRICTIONS. ... You acknowledge that Licensed Software is not designed or intended for use in the design, construction, operation or maintenance of any nuclear facility. ...
21
OAK RIDGE NATIONAL LABORATORYU. S. DEPARTMENT OF ENERGY
Any Questions?