Habanero Extreme Scale Software Research Project



Similar documents
INTRODUCTION TO JAVA PROGRAMMING LANGUAGE

Habanero Extreme Scale Software Research Project

Contents. Java - An Introduction. Java Milestones. Java and its Evolution

1. Overview of the Java Language

CSE 452: Programming Languages. Acknowledgements. Contents. Java and its Evolution

An Overview of Java. overview-1

CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages. Nicki Dell Spring 2014

2 Introduction to Java. Introduction to Programming 1 1

CS 209 Programming in Java #1

To Java SE 8, and Beyond (Plan B)

The Java Series. Java Essentials I What is Java? Basic Language Constructs. Java Essentials I. What is Java?. Basic Language Constructs Slide 1

Objectif. Participant. Prérequis. Remarque. Programme. C# 3.0 Programming in the.net Framework. 1. Introduction to the.

CSC 551: Web Programming. Spring 2004

Crash Course in Java

9/11/15. What is Programming? CSCI 209: Software Development. Discussion: What Is Good Software? Characteristics of Good Software?

Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives

Evolution of the Major Programming Languages

Characteristics of Java (Optional) Y. Daniel Liang Supplement for Introduction to Java Programming

Fundamentals of Java Programming

Online Recruitment System 1. INTRODUCTION

What Perl Programmers Should Know About Java

CSCI E 98: Managed Environments for the Execution of Programs

Programming Languages

General Introduction

PHP vs. Java. In this paper, I am not discussing following two issues since each is currently hotly debated in various communities:

Java with Eclipse: Setup & Getting Started

core. Volume I - Fundamentals Seventh Edition Sun Microsystems Press A Prentice Hall Title ULB Darmstadt

Jonathan Worthington Scarborough Linux User Group

The Decaffeinated Robot

Java Garbage Collection Basics

C# and Other Languages

Java (12 Weeks) Introduction to Java Programming Language

Java Programming. Binnur Kurt Istanbul Technical University Computer Engineering Department. Java Programming. Version 0.0.

Lecture 1 Introduction to Android

Syllabus for CS 134 Java Programming

02 B The Java Virtual Machine

TYLER JUNIOR COLLEGE School of Continuing Studies 1530 SSW Loop 323 Tyler, TX

Kotlin for Android Developers

Java Application Developer Certificate Program Competencies

Introducing Apache Pivot. Greg Brown, Todd Volkert 6/10/2010

Java SE 8 Programming

Study of Development of Java Applications in Eclipse Environment and Development of Java Based Calendar Application with Notifications

The C Programming Language course syllabus associate level

Programmation 2. Introduction à la programmation Java

Handout 1. Introduction to Java programming language. Java primitive types and operations. Reading keyboard Input using class Scanner.

Java applets. SwIG Jing He

Installing Java. Table of contents

Section 1.4. Java s Magic: Bytecode, Java Virtual Machine, JIT,

Chapter 13 Computer Programs and Programming Languages. Discovering Computers Your Interactive Guide to the Digital World

RARITAN VALLEY COMMUNITY COLLEGE ACADEMIC COURSE OUTLINE. CISY 105 Foundations of Computer Science

Programming Language Concepts for Software Developers

picojava TM : A Hardware Implementation of the Java Virtual Machine

Fahim Uddin 1. Java SDK

Rakudo Perl 6 on the JVM. Jonathan Worthington

What is a programming language?

CS555: Distributed Systems [Fall 2015] Dept. Of Computer Science, Colorado State University

Language Based Virtual Machines... or why speed matters. by Lars Bak, Google Inc

Programming Languages

Java History. Java History (cont'd)

Chapter 1 Introduction to Computers, Programs, and Java

<Insert Picture Here> Java, the language for the future

Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages. Corky Cartwright Swarat Chaudhuri November 30, 20111

Java Programming Fundamentals

GTask Developing asynchronous applications for multi-core efficiency

Lesson 06: Basics of Software Development (W02D2

CLINIC MANAGEMENT SYSTEM WITH NOTIFICATION USING GSM MODEM CHAPTER 1 INTRODUCTION

What s Cool in the SAP JVM (CON3243)

Java 6 'th. Concepts INTERNATIONAL STUDENT VERSION. edition

The Hotspot Java Virtual Machine: Memory and Architecture

Mobile Application Languages XML, Java, J2ME and JavaCard Lesson 04 Java

Free Java textbook available online. Introduction to the Java programming language. Compilation. A simple java program

Java Interview Questions and Answers

Free Java textbook available online. Introduction to the Java programming language. Compilation. A simple java program

BEAJRockit Mission Control. Using JRockit Mission Control in the Eclipse IDE

Advanced compiler construction. General course information. Teacher & assistant. Course goals. Evaluation. Grading scheme. Michel Schinz

Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture

How to create/avoid memory leak in Java and.net? Venkat Subramaniam

Chapter 1. Introduction to Computers, Programs, and Java

USE OF PYTHON AS A SATELLITE OPERATIONS AND TESTING AUTOMATION LANGUAGE

CSCI 3136 Principles of Programming Languages

System Structures. Services Interface Structure

JRuby Now and Future Charles Oliver Nutter JRuby Guy Sun Microsystems

Java EE Web Development Course Program

CSC 551: Web Programming. Fall 2001

Restraining Execution Environments

C++ Programming Language

Chapter 1 Java Program Design and Development

The Java Virtual Machine and Mobile Devices. John Buford, Ph.D. Oct 2003 Presented to Gordon College CS 311

Production time profiling On-Demand with Java Flight Recorder

Semester Review. CSC 301, Fall 2015

Getting Started with the Internet Communications Engine

Java CPD (I) Frans Coenen Department of Computer Science

Interpreters and virtual machines. Interpreters. Interpreters. Why interpreters? Tree-based interpreters. Text-based interpreters

No no-argument constructor. No default constructor found

Fachbereich Informatik und Elektrotechnik SunSPOT. Ubiquitous Computing. Ubiquitous Computing, Helmut Dispert

Developing Embedded Software in Java Part 1: Technology and Architecture

Computing Concepts with Java Essentials

Transcription:

Habanero Extreme Scale Software Research Project

Comp215: Evolution of Java Zoran Budimlić (Rice University)

The Beginnings Sun Microsystems 1990 - Create a language for delivering programs on small electronic devices 1991-1993 - James Gosling and Patrick Naughton form a Green Team, developing a new language called Oak for this purpose 1993 - Interest in set-top boxes, interactive TVs and PDAs started to fade NCSA creates Mosaic, the first web browser. Start of the Internet boom The Green Team renames itself into a project First Person, and refocuses the efforts on a language that would allow programs ( applets ) to run within a web browser They call it Java

NCSA Mosaic

Java Language Principles Familiar syntax - very similar to C and C++ Simplify - throw away everything from C++ that wasn t needed No pointers - everything is accessed through a reference No user operator overloading No preprocessor No explicit memory allocation/deallocation - built-in garbage collector instead No global functions - everything is in a class Single inheritance. Multiple inheritance only through interfaces Avoid the C++ multiple inheritance nightmare

Java Is C++ Without The Guns, Knives, And Clubs - James Gosling

Two-stage Approach Java programs are compiled into a portable, machine-independent bytecode Stack machine approach Standardized types (32-bit int, 64-bit int, IEEE floats, e.t.c) Portable - Write Once Run Anywhere (WORA) Bytecode is executed on a Java Virtual Machine Bytecode is first verified for malicious behavior All objects are allocated on the heap, not on stack Initially only interpreted

What Java left out from C++ No stack objects, only heap objects No destructors, only finalize() method No pointers, everything is a reference No delete, garbage collector instead No const, only final (methods, fields, classes) No templates, no preprocessor No operator overloading No multiple inheritance of classes No enumerations or typedefs

What Java added that C++ didn t have Garbage collector Object-rooted, rich class hierarchy (well, almost) Strings, first-class arrays with bounds checking Package system with import interface, implements, extends, abstract finally blocks, static/instance initializers Secure and portable JavaVM, threads Dynamic reflection capabilities JavaDoc code documentation system

1996 JDK (Java Development Kit) 1.0 was released javac - Java compiler with a Recursive Descent Parser jvm - A virtual machine with a bytecode interpreter Compiler and runtime for Solaris, Linux, Windows and Mac OS Java becomes an instant hit with programmers tired of C++, yearning for a true object-oriented language Sun creates JavaSoft, a company dedicated solely to Java development About 30-40 employees in the summer of 1996

1996

1997 JDK (Java Development Kit) 1.1 was released AWT with event-driven programming model inner classes reflection (introspection only) Just In Time (JIT) Compilation (outsourced to Symantec) JavaSoft forms the HotSpot group to work on the in-house JIT Significant Rice presence JavaSoft grows to about 300 employees in the Summer of 1997 Microsoft releases the Microsoft JVM Faster than Sun s implementation Sun sues Microsoft in October for incompletely implementing Java Java is the #2 programming language in the world, with ~.5M developers

1997 HotJava browser A web browser fully implemented in Java Support for executing Java applets AWT GUI Not really competitive with the browsers of the day

Java Inner Classes An outer class can contain an inner class: public class OuterClass {... class InnerClass {... } } Inner classes can be declared inside of a method Inner classes can be anonymous public void sayhello() { HelloWorld frenchgreeting = new HelloWorld() { String name = "tout le monde"; public void greet() { greetsomeone("tout le monde"); } public void greetsomeone(string someone) { name = someone; System.out.println("Salut " + name); } };

Java Grande An academic forum aimed at using Java to address Grande challenges Commercial: Seismic processing, oil reservoir simulation, vehicle simulations Government: Satellite image processing, climate and weather, nuclear weapon simulations Academic: Particle physics, biochemistry, earthquake prediction Cryptography Addressed Java shortcomings in concurrency and numerics Reproducibility of Java executions IEEE standard floating-point behavior Relaxed with Java 1.2 standard

1998 Java 2 (version 1.2) released by Sun New event handling JIT plug-in support IBM introduces the Jikes RVM Java virtual machine written completely in Java! still beats both Microsoft and Sun s implementations of Java Symantec Visual Cafe (an IDE for Java) is the leading platform for developing Java

2000 Java 1.3 (Kestrel) released by Sun HotSpot JVM Plug-in debugging now supported

2000 Microsoft releases C#, which borrows a lot of features from Java C# is sort of Java with reliability, productivity and security deleted. Java Is C++ Without The Guns, Knives, And Clubs - James Gosling - James Gosling

2002 Java 1.4 (Merlin) released by Sun Assertions Regular expressions XML support Cryptography and SSL Logging

2004 Java 1.5 (Tiger) released by Sun Generics! Autoboxing/unboxing of primitive types Static imports Annotations JVM libraries shared among JVM instances

Java Generics So much more intuitive IList<String> emptylist = List.Empty.create(); IList<String> list = emptylist.add("alice").add("bob").add("charlie"); Java uses type erasure at compile time to get rid of generic type parameters The parametric types are converted to a super type Casts are inserted Both emptylist and list above will be lists of Object

Problems with type erasure // create an array of objects Object[] objects = new Object[10]; // cast it to an array of strings String[] strings = (String[])objects; The second line will compile, but it will throw a runtime exception, even if all the elements of the objects array are instances of the String class.

Problems with type erasure // create an array of strings String[] strings = new String[10]; // cast it to an array of objects Object[] objects = strings; // insert an object into the array objects[0] = new Object(); Similar code with generic Vectors: // create a vector of strings Vector<String> strings = new Vector<String>(10); // cast it to a vector of objects Vector<Object> objects = (Vector<Object>)strings; // insert an object into the vector objects.add(new Object()); runtime exception compiler error

2006 Java 1.6 (Mustang, Java SE 6) released by Sun Web services Mixing with JavaScript Compiler access (enables tools like IntelliJ) Pluggable Annotations Security improvements

Started in 2002 at Yahoo Now Open Source as part of the Apache Software Foundation Google MapReduce programming model Decompose your programs into maps and folds Sound familiar? Java virtual machines on all nodes Hadoop Distributed file system (HDFS) Yahoo! and Facebook More than half of Fortune 50 companies use Hadoop

Remember these guys?

2009

2011 Java 1.7 (Dolphin, Java SE 7) released by Oracle Support for dynamic languages Mixing with JavaScript Compiler access (enables tools like IntelliJ) Pluggable Annotations Security improvements

2014 Java 1.8 (Java SE 8) released by Oracle Lambdas! Yay! Use invokedynamic introduced in Java 7 Type inference for generics Functional interfaces Type annotations Parallel operations Java + JavaScript = New Date/Time API Concurrent accumulators

Languages targeting JVM ColdFusion - web development JRuby and Jython - scripting languages based on Ruby and Python Groovy - scripting language based on Java Scala - functional and object-oriented programming language JGNAT and AppletMagic - compile from Ada to Java bytecode C - using C to Java byte code compilers Clojure - functional language based on Lisp MIDletPascal - ah, Pascal Kotlin - statically typed, object-oriented