1 / 34

Java Overview http://www-sldnt.slac.stanford.edu/tony/talk/java-98/

Java Overview http://www-sldnt.slac.stanford.edu/tony/talk/java-98/. Tony Johnson SLD 9 th January 1998. Will discuss History of Language What is Java Language Libraries What is it good for Why you should (perhaps) use it How does it compare with other languages, particularly C, C++

ciro
Download Presentation

Java Overview http://www-sldnt.slac.stanford.edu/tony/talk/java-98/

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 Overviewhttp://www-sldnt.slac.stanford.edu/tony/talk/java-98/ Tony Johnson SLD 9th January 1998

  2. Will discuss History of Language What is Java Language Libraries What is it good for Why you should (perhaps) use it How does it compare with other languages, particularly C, C++ Future of Language Lawsuits etc. Conclusion Not a tutorial on how to program in Java There are a number of example programs, but intent is to give a feel for the language rather than go into too many details. If there is sufficient interest it may be possible to arrange tutorial-like session(s) at a future date. Appendix (left over slides) Gives a brief introduction to language syntax and features. What will this talk cover?

  3. History Originally designed (1991) as a small language for consumer electronics (cable boxes, toasters etc.) Eventually someone wrote HotJava Browser, which could run Java Applets At height of internet craze, adopted by Netscape, Microsoft, Sun etc. as Web Programming Language. More than just a Web Tool Java is a fully functional, platform independent, programming language Powerful set of machine independent libraries, including windowing (GUI) libraries. What is Java? • Past Year • Sun has released several new versions of language + libraries • >1,000,000 copies of Java Development kit downloaded • Java available for MAC, Win 95/NT, HP, SUN, SGI, Digital Unix, Linux, Amiga, OS/2, BEOS, VMS, and even AIX • Microsoft <---Sues---> Sun • Next Year • Should see many real Java applications emerge

  4. Java Source code Compiler Java “Bytecodes” Mac Unix PC JIT Compiler Bytecode Interpreter Machine Code How does Java work? • Java source code is compiled into machine independent “bytecodes” • The bytecodes can be run directly by an interpreter • The bytecodes can be converted to machine code and executed (“Just in Time (JIT)” compilation). • An optimizing interpreter can dynamically identify program “hotspots” and create code optimized for the specific machine/environment. • Optimizing interpreter coming soon from SUN.

  5. Simple well, simpler than C++ Object Orientated more so than C++ Distributed Built in support for Internet protocols, URL’s, HTTP etc. Support for distributed objects, RMI, CORBA etc. Robust Difficult to create memory leaks, go beyond the end of an array, corrupt stack or code Secure Bytecode “verifier”, padded cell Architecture Neural, Portable Runs on PC, MAC, Unix, VMS Interpreted “Compiler” converts code into machine independent “bytecodes” High Performance With JIT compiler still several times slower than native C++ Coming soon! Optimizing interpreter from Sun, faster (?!?) than C++ Multithreaded Language has direct support for multithreading (c.f. subprocesses) Dynamic Libraries can change without recompiling programs that use them Java Buzzwords

  6. Java Language Features • Pure Object Oriented Language • Can only write classes • Syntax very similar to C/C++, but without many of the rarely used, overly complex features of C++ • No history • No operator overloading • No multiple inheritance • No Pointers • Supports • Inheritance • Interfaces • Nested Classes • Automatic Garbage Collection • Built in support for • Threads • Exception handling • Object serialization • Networking • Reflection

  7. Java Libraries (API’s) • The usefulness of Java is greatly enhanced by the large range of platform independent libraries available: • AWT - Basic GUI toolkit - delegates to OS specific “Peers” • SWING (a.k.a. JFC) Enhanced “Peerless” GUI toolkit (Beta) • 2D - Transformations, stroked fonts, pattern fill, textures etc. (Beta) • JDBC - Standard Interface between Java and SQL databases • ODMG binding - Standard Interface to Object databases • RMI + CORBA - Remote procedure calls between distributed Java applications, and between Java and other languages • BEANS - Java based components, plug commercial components into your applications. • Media (audio, video etc.), Share (e.g. whiteboards), Animation, Telephony, 3D (developed by SUN and SGI), cryptography, server. (Beta)

  8. Web Applets Database programming SQL databases using JDBC Object databases using ODMG binding Java Servlets Stand Alone Applications GUI based applications Distributed client-server applications Using TCPIP + RMI + CORBA Graphics applications 2D and 3D Physics Analysis What is Java Good For?

  9. Hello World in Java

  10. Java Applets are programs designed to run inside a web browser. Instead of having a “main” method they have a class derived from “Applet” whose “init” method is called when the applet is loaded. The applet class provides capabilities for loading images, sounds and animations from the internet. Applets loaded from the internet are run inside a “sandbox” which restricts what they can do: No Access to local filesystem Can only open network connections with the site they came from Java Applets • Problems • Lack of network/filesystem access can be restrictive • Complex programs can be large and hence slow to download • Sun has been introducing new releases far to fast for browser manufacturers to keep up. • Each browser has subtle differences. • Solutions? • Java activator from SUN • Plug in for netscape/IE to ensure latest SUN features always available. • Signed applets can be granted more privileges. • Can download local copies of large programs

  11. Java Applet Example

  12. Java provides standard interface to SQL databases, JDBC Most database vendors now have implementations of JDBC for use with their database Oracle has pure Java JDBC driver (no need to install SQLNet, SQLPlus etc. to be able to use it). Makes it possible to write database programs which are independent of the underlying database. Automatic translation of database types to native Java types: e.g. Date/time in database is extracted as Java Date object, manipulation of dates straightforward. Java SQL Database Access

  13. Java SQL Database Access

  14. Using JDBC to connect to databases is fine for accessing legacy data in SQL databases. Using SQL and pulling columns out of tables is a little inconvenient. Would be better to create a network of related objects in Java and “stick them all in a database” “retrieve all or part of the network later” This is what object databases are for ODMG (Object Database Management Group) has defined a standard binding between Java and OO databases. Several OO databases new support the ODMG Java binding Java Object Database Access

  15. Java Object Database Access

  16. A Java Servlet runs on a web server instead of a web browser Performs similar function to CGI scripts under Unix Works with many web servers Netscape, Microsoft IIS, Apache, Java Web Server, many more... Machine independent Much faster than CGI (no process forking) Gives full power of Java for database access, data manipulation etc. Java Servlets

  17. So far all examples have been fairly trivial. Is it possible to write real applications in Java? Yes! (at least I hope so) Real Applications in Java?

  18. Java has good mix of power, simplicity, math, speed for physics analysis SLD has developed a set of hep.analysis classes for Histograming Networking support and mobility of code excellent for client server applications. Analysis routine goes to data instead of data coming to analysis routine. Java for Physics Analysis?

  19. Download free Java Developer Kit (JDK) from SUN (www.javasoft.com) Available for Windows, Solaris. Contains line mode compiler+debugger+misc. tools Similar kits available for many other platforms (from vendors) Solaris/AIX JDK installed for Unix at SLAC in /afs/slac/packages/java For more serious work get hold of a Java Integrated Development Environment Symantec Café (the oldest and most popular IDE at present) Visual J++ from Microsoft (beware of assimilation) Visual Age for Java from IBM Java Workshop from SUN All contain integrated editor/debugger/source control None have really good WYSIWYG layout tools (yet). How to get started with Java

  20. Web Sites http://www.javasoft.com Sun’s home page for Java http://www.javasoft.com/books/Series/Tutorial/index.html Complete JAVA tutorial, in case you are too poor to buy the book http://www.gamelan.com/ Huge library of Java applets and applications http://www.javaworld.com http://www.javareport.com JavaWorld/Java Report (magazines) http://café.symantec.com/ Café Web Site http://www.microsoft.com/visualj Visual J++ http://www-sldnt.slac.stanford.edu/jas Java Analysis Studio More Information • Books • Keep away from books whose focus is too web related • O’Reilly • Java in a Nutshell • Exploring Java • Core Java (SunSoft) • A little two thick for comfort, but comprehensive and down-to-earth • Learn Java Now (Microsoft) • Comes free with Visual J++

  21. Conclusion • If you are still using: • Fortran, C, C++, Perl, CGI, SQLPlus, Rexx, IDA etc. • you could save yourself a lot of time and effort by switching to:

  22. Appendix Java Language Elements

  23. Topics to be Covered • Java Language Features • Variables, Operators, Expressions • Statements • Classes + Objects • Inheritance • Packages • Exceptions • Multithreading • Data Structures • Standard Libraries • Plenty of example programs • Tutorial rather than real-world programs

  24. Primitive Types int, short, long, byte all signed size is machine independent float, double char Stores single UNICODE character boolean Variables and Expressions int a, b; double salary = 100000; float slacRaise = 1.00002; salary = salary * slacRaise; salary *= slacRaise; salary -= parkingFine; Operators + - * / % ^ ++ -- ! ~ & | && || ? : << >> >>> < <= > >= == != Strings Java has nice UNICODE string type that supports concatenation, substrings, comparison etc. String s = “Your raise is ” + slacRaise; Notes: if (a = 3) { } is illegal! No operator overloading No pointers! (But surprisingly you won’t miss them) Types, Variables, Operators, Expressions

  25. Again, very C like if (condition1) {block1} else if (condition2) {block2} else {block3} for (int i=0 ; i<10 ; i++) {block} while (condition) {block} do {block} while (condition); Unfortunately even the switch statement is just like C switch (choice) { case 1: case 2: … break; case 3: … break; default: … break; } Statements

  26. Java is an object oriented programming language, so some rudimentary knowledge of OO terminology is required Classes (e.g. “Employee”, “Track”) Objects specific instances of a class (e.g. “Tony Johnson”, “Track 5”) In Java all functions are contained within classes For largely historical reasons functions are often called methods or member functions Inheritance (aka subclassing) e.g. “Associate Director”, “Drift Chamber Track” Encapsulation Variables/Functions can be declared: private only functions within same class or superclass can access them (c.f. C++ protected) public any function can access them Java also implements static Applies to class not object final Cannot be overridden by subclass Introduction to OO Programming

  27. class Employee { public Employee (String n, double s) { name = n; salary = s; } public Employee (String n) { name = n; salary = 0; } public void raiseSalary(double byPercent) { salary *= 1 + byPercent / 100; } public double getSalary() { return salary; } private String name; private double salary; } Class Declaration Constructor Overloaded Constructor Access Method Private Member Variables Classes

  28. Objects represent instances of classes Employee javaExpert = new Employee(“Joe”,100000); javaExpert.RaiseSalary(10); // Raise salary by 10% system.out.println(“Salary is” + javaExpert.GetSalary()); Note that Java uses the keyword new for creation of new objects. Unlike C++ there is no delete keyword for the deletion of objects. Java handles deletion of objects (and recovery of the memory they occupy) automatically as soon as there are no longer any references to them. This makes writing code much easier, it is “impossible” to create a memory leak in Java.. The process of keeping track of when objects are unreferenced and deleting them is called “garbage collection”. It does impose some processing overhead which slows down Java programs compared to equivalent programs in C or C++. Appl_1 Example + EmployeeTest Example Objects

  29. class Manager Extends Employee { public Manager (String n, double s, Employee e) { name = n; salary = s; secretary = e; } public String GetSecretary() { return secretary; } public void RaiseSalary(double byPercent) { double bonus = 10; super.RaiseSalary(byPercent + bonus); } private Employee secretary; } ManagerTest Example Class Declaration Constructor New Access Method Overridden Method New member variables Inheritance

  30. Interfaces in Java are a replacement for the concept of “multiple inheritance” in C++. Suppose we want to sort managers by the number of employees they have. Interfaces Objects can implement any number of interfaces Can have hierarchies of interfaces Interfaces cannot have methods Cleaner but not quite as powerful as multiple inheritance Only way to implement “callbacks” in Java Enumeration Interface Can loop over all elements of any class that implements the enumeration interface Enumeration e = thing.elements(); while (e.hasMoreElements()) { Thing t = e.getNextElement(); } Employee Manager Sortable Interfaces • In C++ both Employee and Sortable can be classes • In Java one (probably sortable) must be an “interface” • Employee Sort Example

  31. C++ “If you build it they will come” Standard Template Library Java has powerful built in objects String Arrays Arbitrary size but cannot be resized Vectors Full dynamic sizing Bit Sets Arbitrary size array of bits HashTables + HashSets Quick way to look up object in large collection Built in objects continued… Property Sets Useful for storing program parameters Linked Lists Queues Stacks Multi-Dimensional Arrays Full featured “Collections” coming in JDK 1.2 Sieve Example (Benchmark) C++ 1.53 seconds Java 59.93 seconds Visual Basic 65.69 seconds Microsoft JIT compiler ?3 seconds Arrays, Collections etc.

  32. Threads are similar to “fork” or “spawn” but Threads run in same address space, not separate process Very efficient Very dangerous All modern operating systems have support for threads Java has built-in support for threads Just derive a class from thread Issue the start() method on the object Bouncing Ball Example Java Threads support Priorities Interrupts Thread groups Synchronization synchronized keyword can be applied to classes or methods Timers Threads

  33. AWT allows development of platform independent GUI programs Java takes a “Lowest Common Denominator” approach Supports only one mouse button Doesn’t “look as nice” as native windows/MAC applications Available graphical layout tools are quite limited. Moderate set of graphic objects Buttons, Labels, Text Input, Menus, Scroll Bars, Dialogs, Radio Buttons Mapped onto native GUI objects on each platform. “Layouts” are used to compensate for the fact that GUI objects may have different sizes on different platforms Limited set of layouts are provided Flow Layout Border Layout Card Layout Grid (Bag) Layout User defined layouts needed for most real programs HelloWorld Example Java AWT Package

  34. import physics.hep.*; class MyAnalysis extends Analysis { public void init() { h = new Hist(“Energy”); } public void Evanal(Event e) { Enumeration x = e.getTracks(); while (x.hasMoreElements()) { Track t = x.getNextElement(); h.Add(t.getEnergy()); } } private Histogram h; } Java Compiler GUI Data Analysis Engine Users Java Code Experiment Interface Java for Physics? Experiment Extensions (Event Display) Network

More Related