210 likes | 223 Views
Learn about the key concepts of Java including Abstraction, Encapsulation, Inheritance, and Polymorphism. Explore the pros and cons of Java, its extensive libraries, and the latest features like Generics and Enhanced for Loop.
E N D
Java Pros and Cons − Roundtable American Nuclear Society Annual Meeting June 16, 2004 Pittsburgh, PA
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
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){ ... } } Abstraction / Encapsulation 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; } }
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; } }
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; } }
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; } }
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
Java Cons • Interpreted
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);
Sun Microsystems, Inc.Binary Code License Agreementfor 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. ...
Sun Microsystems, Inc.Binary Code License Agreementfor 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. ...