1 / 21

Java Pros and Cons − Roundtable

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.

hopperr
Download Presentation

Java Pros and Cons − Roundtable

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Java Pros and Cons − Roundtable American Nuclear Society Annual Meeting June 16, 2004 Pittsburgh, PA

  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

  3. 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; } }

  4. 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. 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. 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; } }

  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

  8. Java Cons • Interpreted

  9. 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);

  10. 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. ...

  11. 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. ...

  12. Any Questions?

More Related