TM : A Quick Look Java TM : A Quick Look Java somchaip@chula.ac.th somchaip@chula.ac.th
Programming Languages Programming Languages � 1957 1957 : : Fortran Fortran � � 1959 1959 : : Cobol, Lisp Cobol, Lisp � � 1964 1964 : : Basic Basic � � 1971 1971 : : Pascal Pascal � � 1972 1972 : : C, Prolog C, Prolog � � 1983 1983 : : C C+ + + + � � 1995 1995 : : Java Java � � 2001 2001 : : C# , J# C# , J# �
Sun’ ’s Green Project s Green Project Sun � 1990 1990 : : Sun Sun’ ’s Green project s Green project � – “ “The convergence of digitally controlled The convergence of digitally controlled – consumer devices and computers. .” ” consumer devices and computers � 1992 1992 : : StarSeven StarSeven (* (* 7 7) ) handheld handheld � wireless PDA using Oak as prog prog. lang. . lang. wireless PDA using Oak as – * 7 went ch11 * 7 went ch11 – � 1995 : Oak was renamed to Java at 1995 : Oak was renamed to Java at � the time when Internet & WWW was the time when Internet & WWW was booming. booming.
Java Technology Java Technology � Java Programming Language Java Programming Language � � Java Platform Java Platform � – Java Virtual Machine Java Virtual Machine – – Java API Java API –
Java VM Java VM � Solaris Solaris � PDA PDA � � � Linux Linux � Java Java- -enabled cell enabled cell � � phones phones � Windows Windows � � GameBoy GameBoy Advance Advance � � Mac OS X Mac OS X � � ... ... � � HP HP- -UX UX � � IBM IBM- -AIX, OS/390 AIX, OS/390 �
Java API Java API version # packages packages # classes classes version # # 1.0 8 212 1.0 8 212 1.1 23 504 1.1 23 504 1.2 59 1520 1.2 59 1520 Java 2 1.3 76 ~ 1800 1.3 76 ~ 1800 1.4 135 ~ 2800 1.4 135 ~ 2800 1.5 ??? ???? 1.5 ??? ????
Java Platforms Java Platforms � Standard Edition Standard Edition ( (J2SE J2SE) ) � – client client- -side general side general- -purpose applications purpose applications – � Enterprise Edition Enterprise Edition ( (J2EE J2EE) ) � – multi multi- -tier server tier server- -centric applications centric applications – � Micro Edition Micro Edition ( (J2ME J2ME) ) � – consumer and embedded devices consumer and embedded devices –
Java Technology Java Technology � James Gosling : James Gosling : � – “… “… software VLSI, end software VLSI, end- -to to- -end, side end, side- -to to- - – side, homogenous view of heterogeneity side, homogenous view of heterogeneity reality ...” ” reality ...
2003 Java Logos Java Logos 1995 2002 -
Sun's Stat. Sun's Stat. � 500 million desktop PCs run Java applets 500 million desktop PCs run Java applets � � 3 million 3 million+ + professional Java developers professional Java developers � � Of all Java developers Of all Java developers ( (Evans Data, 2002 Evans Data, 2002): ): � – 58% develop desktop applications 58% develop desktop applications – – 50% develop intranet applets 50% develop intranet applets – – 38% develop internet applets 38% develop internet applets – � > 36 million Java runtime > 36 million Java runtime env env. downloads . downloads � � JRE downloads surging, now about 3 million JRE downloads surging, now about 3 million � per month per month
Why Java ? Why Java ?
Popularity Popularity Position Program m ing Language Ratings Java 1 47.4 2 C 36.7 C + + 3 33.8 Perl 4 18.3 ( Visual ) Basic 5 15.2 PHP 6 9.5 SQL 7 6.1 C # 8 4.1 9 Delphi / Pascal / Kylix 3.8 JavaScript 10 3.7
The Biggest Open Problem The Biggest Open Problem I n Programming Languages I n Programming Languages � Increasing Programmer Productivity Increasing Programmer Productivity � – Write programs correctly Write programs correctly – – Write programs quickly Write programs quickly – – Write programs easily Write programs easily – http://research.microsoft.com/~toddpro/papers/disruptive.ppt
Java Programming Lang. Java Programming Lang. � James Gosling : James Gosling : � – Life is too short, Java lets him do more Life is too short, Java lets him do more – coding, less debugging coding, less debugging – Java beats C and C+ + by a factor of 2 in Java beats C and C+ + by a factor of 2 in – developer productivity. developer productivity.
Java : Design Goals Java : Design Goals Java technology must enable the development of secure, high performance, and highly robust applications on multiple platforms in heterogeneous, distributed networks.
Java Programming Lang. Java Programming Lang. � Simple, Familiar, Object Simple, Familiar, Object- -Oriented Oriented � � Robust, Secure Robust, Secure � � Architecture Neutral, Portable Architecture Neutral, Portable � � High Performance High Performance � � Interpreted, Threaded, Dynamic Interpreted, Threaded, Dynamic � Platform independence is the main reason for using Java (ComputerWorld’s survey)
Simple, Familiar, and OO Simple, Familiar, and OO � easily program easily program � � Bill Joys : Java = C+ + Bill Joys : Java = C+ + - - - - � � provide a clean & efficient object provide a clean & efficient object- -based based � development platform development platform
Robust and Secure Robust and Secure � Robust Robust � – strict compile time checking strict compile time checking – – strict run strict run- -time checking time checking – – automatic garbage collection automatic garbage collection – – support exception handling & assertion support exception handling & assertion – � Secure Secure � – no pointer no pointer – – verify verify bytecode bytecode before class loading before class loading – – sandbox sandbox –
Arch Neutral & Portable Arch Neutral & Portable � Write Once Run Anywhere (WORA) Write Once Run Anywhere (WORA) � – compiled to Java compiled to Java bytecode bytecode – – run on Java VM run on Java VM – – fixed sizes, formats, and behaviors of all fixed sizes, formats, and behaviors of all – primitive data types primitive data types – behave (almost) the same on multi behave (almost) the same on multi- - – platforms platforms � solve distribution & version problems solve distribution & version problems � � can be deployed into heterogeneous can be deployed into heterogeneous � network environments network environments
High Performance High Performance � Hotspot VM is highly tunable Hotspot VM is highly tunable � � the garbage collector runs as a low the garbage collector runs as a low- - � priority thread priority thread � support native codes for compute support native codes for compute- - � intensive operations intensive operations � JVM performance keeps improving JVM performance keeps improving �
I nterpreted, Thread, Dynamic I nterpreted, Thread, Dynamic � linking is lightweight and incremental linking is lightweight and incremental � � faster development cycle faster development cycle � � support multithreading at the support multithreading at the � language level w/ sync. primitives language level w/ sync. primitives � language and run language and run- -time system are time system are � dynamically linked on demand dynamically linked on demand
Java’ ’s WORA s WORA Java � promote readability promote readability � � Java code will survive. Java code will survive. � � Write today, use next year. Write today, use next year. � � Easy to maintain at a fixed level of functionality Easy to maintain at a fixed level of functionality � � Java enables evolution Java enables evolution � – bad code dies bad code dies – – good code lives on (modified, evolves, good code lives on (modified, evolves, – becomes better) becomes better) http://www.wgrosso.com/Articles/Presentations/PresentationonJavaasaProg.html
WORA = = Community WORA = = Community � Reuse lots of code from different places Reuse lots of code from different places � – Very little need to worry about platform Very little need to worry about platform – dependencies dependencies – Widespread adoption of coding conventions Widespread adoption of coding conventions – – And large And large- -scale libraries scale libraries – � New programming style New programming style � – Write Half, Steal the Rest Write Half, Steal the Rest – http://www.wgrosso.com/Articles/Presentations/PresentationonJavaasaProg.html
Language Features Language Features � 1995 (1.0) : first public release 1995 (1.0) : first public release � � 1997 (1.1) : nested classes 1997 (1.1) : nested classes � � 2001 (1.4) : assert 2001 (1.4) : assert � � 2003 (1.5) : 2003 (1.5) : � – generics, generics, enum enum, enhanced for, , enhanced for, – autoboxing/unboxing, , varargs varargs, static , static autoboxing/unboxing import, metadata. import, metadata. increase expressiveness, increase safety
Recommend
More recommend