Overview of Java CS 3250. A Brief History January 1996: first official release JDK 1.0 Web: applets,...

Post on 28-Dec-2015

218 views 0 download

Transcript of Overview of Java CS 3250. A Brief History January 1996: first official release JDK 1.0 Web: applets,...

Overview of Java

CS 3250

A Brief HistoryJanuary 1996:

first official release JDK 1.0

Web: applets, security, URL, networking

GUI: Abstract Windows Toolkit (AWT)

"To be blunt, Java 1.0 was not ready for prime time."

Core Java, Vol. I, p. 9

A Brief History(continued)

February 1997: JDK 1.1

Authentication: digital signatures, certificates

Distributed computing: RMI, object serialization, Java IDL/CORBA

Database connectivity: JDBC

Component architecture: JavaBean Version 1.1 "filled in the most obvious gaps, greatly improved the reflection capability, and added a new event model for GUI programming. It was still rather limited, though."

Core Java, Vol. I, p. 9

December 1998:

Java 2 Platform (JDK 1.2)

Standard, Enterprise, and Micro Editions

JFC: Swing, Java2D, Java3D

Java Cryptography Extension (JCE)

Enterprise computing: enterprise JavaBean (EJB), servlets, Java server page (JSP), Jini, XML

A Brief History(continued)

More changes in 1.2 (Java 2):

Java Multimedia Framework (JMF)Embedded systems: KVM, JavaCard Performance enhancement: JIT, HotSpot VM

A Brief History(continued)

Version 1.2 "replaced the early toylike GUI and graphics toolkits with sophisticated and scalable versions that came a lot closer to the promise of 'Write Once, Run Anywhere' than their predecessors."

Core Java, Vol. I, p. 10

Versions 1.3 and 1.4:

incremental improvements to library, performance

bug fixes

A Brief History(continued)

"During this time, much of the initial hype about Java applets and client-side applications abated, but Java became the platform of choice for server-side applications."

Core Java, Vol. I, p. 10

Versions 5.0 (originally 1.5):

significant changes to language, not just library

generic classes

features inspired by C#"for each" loop, autoboxing, metadata

A Brief History(continued)

"Language changes are always a source of compatibility pain, but several of these new language features are so seductive that we think programmers will embrace them eagerly."

Core Java, Vol. I, p. 10

Evolution of JavaVersion New Language Features Classes and

Interfaces

1.0 The language itself 211

1.1 Inner classes 477

1.2 None 1524

1.3 None 1840

1.4 Assertions 2723

5.0 Generic classes, "for each" loop, varargs, autoboxing, metadata, enumerations, static import

3270

based on p. 10 of Core Java, Vol. I

Top 10 Reasonsfor Using Java

Or, 10 ways to start an argument

10. Garbage Collected

C and C++ are not, but most other modern languages are

9. Visual Studio

Platform-specific

Version problems

Impossible to write a small program

Lack of support for command-line tools

Emacs, make, javac, java

8. Multi-threaded

Runnable

synchronized

7. Distributed

Socket classes

Remote Method Invocation (RMI)

Serialization

6. GUI-less GUIs

Can make a GUI with just a text editor

Also, flexible GUIs (layouts)

5. Jobs

Personally, I haven’t heard of a good way to measure this…

4. Pervasive

http://code.google.com/android

“The Open Handset Alliance, a group of more than 30 technology and mobile companies, is developing Android: the first complete, open, and free mobile platform.”

Also servlets, applets, JSP, current phone platforms

3. Linux, OS X

Architecture neutral

2. Libraries

Thousands of classes

Comprehensive and useful documentation

And the number one reason is. . .

1. Portable, standard, and free Graphics and GUIs

Near misses:

wxWidgets (not standard, not particularly easy to use)

QT (not free or standard)

GTK (not standard)

.NET (not portable)

Top 10 reasons NOT to use Java

You can’t say I’m biased…

10. Unity

Unity? Huh?

JavaScript, C#, Boo

9. ReallyLongVariableNamesAndClassNamesForWhichJavaIsFamousOrInfamous

8. Java is “hard to teach”

“Too many things that can’t be explained at the beginning”

Do you believe it?

7. J2EE

But, some people think this is Java’s niche

6. Java is the “new COBOL”

Do you believe it?

5. Bad press

Overhyped, misconceptionsSee Professor Allison’s D paper

4. Sun’s follies

ME (and not working with Palm)

Java Media Framework

Java 3D

Quicktime for Java (OK, that’s Apple’s)

Is Oracle doing any better?

3. C# and the 900-pound gorilla

2. Python, JavaScript

But, see Jython and Rhino

Maybe Ruby, D, and maybe even PHP (but not Perl)

1. Performance

Not as fast as C++ or C#

Is it fast enough?

What’s Missing(vs. C++)

Explicit pointers

Delete operator

Destructors

References (pass-by-reference)

Default arguments

What’s Missing(vs. C++)

GlobalsLocal static dataOperator overloadingMultiple (implementation) inheritanceSeparation of declaration and definitionTemplates (“generics” added in 1.5)

What’s NewEverything resides in a class

Data and functions

Garbage collectionFewer memory management headaches

Exceptions not optionalUnicode encodingPortable:

ThreadsNetworkingData sizes

Java Architecture

Java code is compiled into platform-independent “byte code” (“javac.exe”)

Each class in its own .class file

The Java Virtual Machine runs in the target environment (“java.exe”)

Interprets the byte codeAdvantage: portability (“write-once-run-anywhere”)Disadvantage: degraded performance

JIT Compilation

“Just-in-time” compilation

The JVM has the JIT compiler compile the code into native machine code

10-20 times faster than classic JVM interpretation

public class Hello{ public static void main (String[] args) { System.out.println("Hello, world"); }}

First Java Application

Every program must have at least one class

Source file must be class name plus ".java"

public class Hello{ public static void main (String[] args) { System.out.println("Hello, world"); }}

First Java Application

The famous "magic formula" for the main method of a Java application:

Elements of Java Programs

Class: Hello

Method: main(...)

Statement: System.out.println(...)

Comments:

// a comment

/* another comment */

/** document comment */

Source file: Hello.java (case sensitive)

Development EnvironmentsJava SDK from Oracle

www.oracle.com/technetwork/java/javase/downloads/index.html

command-line tools: javac, java, etc.

no editor included

netBeans (netbeans.org)IDE, including Java beans (components)

Eclipse IDE (eclipse.org)– IDE

All of these are freeSee Ch. 2 and the web sites for more information.

Compile and Run an Appusing the Java SDK command-line tools • To compile:

javac Hello.java

• To run:

java Hello