O AK R IDGE N ATIONAL L ABORATORY U. S. D EPARTMENT OF E NERGY 1 Java Pros and Cons − Roundtable American Nuclear Society Annual Meeting June 16, 2004 Pittsburgh, PA
O AK R IDGE N ATIONAL L ABORATORY U. S. D EPARTMENT OF E NERGY 2 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
O AK R IDGE N ATIONAL L ABORATORY U. S. D EPARTMENT OF E NERGY 3 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; }
O AK R IDGE N ATIONAL L ABORATORY U. S. D EPARTMENT OF E NERGY 4 Inheritance (1/2) public class ChargedParticle extends Particle { double restMass; int charge; // Physical Constants static double ELEMCHARGE = e-19; // Coulombs static double RESTMASSKG = e-31; // kg static double RESTMASS = 0.511; // MeV static double ERADIUS = e-15; // meter public ChargedParticle(){ super(); restMass = ChargedParticle.RESTMASS; charge = -1; } public double getSpeed(){ double speed =... (energy-restMass)... return speed; }
O AK R IDGE N ATIONAL L ABORATORY U. S. D EPARTMENT OF E NERGY 5 Inheritance (2/2) public class Photon extends Particle { // Physical Constants static double speedOfLight = ; // m/s static double planckConstant = e-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; }
O AK R IDGE N ATIONAL L ABORATORY U. S. D EPARTMENT OF E NERGY 6 Polymorphism 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 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; }
O AK R IDGE N ATIONAL L ABORATORY U. S. D EPARTMENT OF E NERGY 7 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
O AK R IDGE N ATIONAL L ABORATORY U. S. D EPARTMENT OF E NERGY 8 Java Cons Interpreted
O AK R IDGE N ATIONAL L ABORATORY U. S. D EPARTMENT OF E NERGY 9
O AK R IDGE N ATIONAL L ABORATORY U. S. D EPARTMENT OF E NERGY 10
O AK R IDGE N ATIONAL L ABORATORY U. S. D EPARTMENT OF E NERGY 11
O AK R IDGE N ATIONAL L ABORATORY U. S. D EPARTMENT OF E NERGY 12
O AK R IDGE N ATIONAL L ABORATORY U. S. D EPARTMENT OF E NERGY 13
O AK R IDGE N ATIONAL L ABORATORY U. S. D EPARTMENT OF E NERGY 14
O AK R IDGE N ATIONAL L ABORATORY U. S. D EPARTMENT OF E NERGY 15
O AK R IDGE N ATIONAL L ABORATORY U. S. D EPARTMENT OF E NERGY 16
O AK R IDGE N ATIONAL L ABORATORY U. S. D EPARTMENT OF E NERGY 17
O AK R IDGE N ATIONAL L ABORATORY U. S. D EPARTMENT OF E NERGY 18 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 i = c.iterator(); while(i.hasNext()) { String item = i.next(); System.out.println("Item: "+item); } public void newFor(Collection c) { for(String str : c) { System.out.println(str); } System.out.printf("%s %3d", name, age);
O AK R IDGE N ATIONAL L ABORATORY U. S. D EPARTMENT OF E NERGY 19 Sun Microsystems, Inc. Binary Code License Agreement for the JAVATM 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....
O AK R IDGE N ATIONAL L ABORATORY U. S. D EPARTMENT OF E NERGY 20 Sun Microsystems, Inc. Binary Code License Agreement for the JAVATM 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....
O AK R IDGE N ATIONAL L ABORATORY U. S. D EPARTMENT OF E NERGY 21 Any Questions?