Java > where we were? > where we are? > where we’re going? & know how
Dec 17, 2014
Java > where we were? > where we are? > where we’re going? & know how
About me: se.linkedin.com/in/hamidsamadi/ Java developer since 1995 CEO Solid Beans AB www.solidbeans.com CEO Matchup AB www.matchup.se Java Instructor for www.informator.se PrimeFaces Nordic agent www.primefaces.org Event organizer jDays www.jdays.se Event organizer Android Forum Göteborg
In June 1991:
James Gosling starts working on an interpreter (called "Oak"), which, several years later is renamed "Java."
Where we were?
Source File Compiler
Executable File
In August 1991:
- A small group of Sun engineers called the "Green Team“, led by James Gosling, demonstrates basic user interface ideas and graphics system to Suns co-founders
Where we were?
- They believed that the next wave in computing was the union of digital consumer devices and computers
From 1991 to 1995:
Events & evolution such as:
- Mosaic 1.0, the first graphical browser for the Internet, is released
- Interactive Cable TV
- Java compiler in Java has been implemented (James had previously implemented it in C)
- Java compatible browsers (Netscape)
Where we were?
From 1991 to 1995:
Where we were?
This concept was too much advanced for the industry at the time BUT it was just right for the Internet, which was just starting to take off. In 1995, the team announced that the Netscape Navigator Internet browser would integrate with Java technology.
So:
- The first programming language was created, a cross-platform computing environment NOT tied to any particular operating system or microprocessor!
- Applications written in Java will run anywhere
- Eliminating incompatibility between operating systems and versions of operating systems.
Where we were?
Java Iterpreter
Where we were?
Compiler
Interpreter Interpreter Interpreter
MacOS Unix Windows
Operating System
Java Virtual Machine
Java Technology consists of: - Java Language: used to develop software for mobile devices, browser-run applets, games, desktop, enterprise (server-side), and scientific applications - Java Platform: consists of Java Virtual Machine (JVM) responsible for hardware abstraction - Java Tools: like java compiler
Where we were?
Where we were?
Java Development Kit 1.0 was released on January 23, 1996
JDK API
JDK releases:
- 1995 Alpha & Beta
- 1996 JDK 1.0 > Basic support for AWT
- 1997 JDK 1.1 > JavaBeans, RMI, AWT, JDBC, servlets, JNDI, EJB
- 1998 Java 1.2 > Reflection, Swing, Java Collections Framework, plug-in, … Becomes known as Java 2, Port to Linux.
Where we were?
- 1999 XML support, JavaServer Pages, Java Editions (J2ME, J2SE, J2EE) …
- 2000 J2SE 1.3 RMI/CORBA, JavaSound, …
- 2002 J2SE 1.4 …
- 2004 J2SE 5 New languages futures, @ …
- 2006 Java SE 6
- 2011 Java SE 7 - 2014/01/23 Java SE 8 Final Release Candidate
Where we were?
- 9 Million Java Developers Worldwide - #1 Choice for Developers - #1 Development Platform - 3 Billion Mobile Phones Run Java - 100 Percent of Blu-ray Disc Players Ship with Java - 97 Percent of Enterprise Desktops Run Java - 5 Billion Java Cards in use - 7 Billion Java Cards sold - 89% of desktops run java - 125 million TV devices run java Source: JavaOne 2013 Strategy Keynote
Where we are?
Where we are?
Also Many embedded devices are based on Java:
set-top boxes, printers, web cams, games, car navigation systems, lottery terminals, medical devices, parking payment stations, etc
- Java is not a new programming language any more. - From early 1995 until now we have seen how it has developed from a JDK (Java Development Kit) to Java EE (Enterprise Edition) and new Java Open Source frameworks and technologies. - At the beginning, Java was about a few packages and APIs you could use to solve small problems. But, what about now, when Java has branched out into several technologies and Open Source frameworks?
Where we are?
There are four Java Platforms: 1) Java Standard Edition (Java SE) 2) Java Enterprise Edition (Java EE) 3) Java Micro Edition (Java ME) 4) JavaFX
Where we are?
SE EE
ME
JavaFX
Where we are?
Where we are? Java SE
Built on top of the Java SE platform, for developing and running large-scale, multi-tiered, scalable, reliable, and secure network applications
Where we are? Java EE
- APIs & small virtual machine for running java programming language applications on small devices, like mobile phones.
- A subset of the JavaSE API
- Java ME applications are often clients of Java EE platform services
Where we are? Java ME
Java FX: a platform for creating rich internet applications using a lightweight user-interface API
Where we are?
o Ajax o AOP o Bloggers o Build system o Business Intelligent o ByteCode Libraries o CMS (Content Management
System) o Cache Solutions o Charting & Reporting Tools o Chat servers o Code analyzer o Code Coverage Tools o Collection Libraries o Command line interpreters o Database Connection Pools o ERP & CRM Software o Eclipse plugins o Expressions language
Where we’re going? Open Source Many APIs & tools
Spring
Primefaces
Hibernate
. . .
OPEN SOURCE
o Financial Software o Forum Software o HTML parsers o IDEs o Tracking software o JEE frameworks o JDBC drivers o JMS o JMX tools o scheduler o Localization &
Internationalization Tools Logging tools
o Mail clients o Network clients/servers o NoSQL Databases o PDF Libraries o Parser Generators o Persistence Frameworks o Portals
Where we’re going? Open Source Many APIs & tools
o Project management tools o SQL clients o Scripting Languages o Search engine o Security & Cryptography tools o Control Tools o Swing Frameworks & Components o Template Engines o Testing tools o Text processing o UML & Modeling o Validation frameworks
o Web frameworks o Web mail clients o Web servers o Web services tools o Web testing tools o Wiki engines o XML parser o XML UI Toolkits
o . . . o . . . . o . . . . . . o . . . . . . . . o . . . . . . . . . . o . . . . . . . . . . . o . . . . . . . . . . . .
Where we’re going? Open Source Many APIs & tools
Where we’re going? Open Source Many APIs & tools
Struts Turbine Tapestry WebWork (Struts 2)
Cocoon Spring MVC Maverick Echo Play! SOFIA Verge
JPublish Jucas MyFaces WebOnSwing VRaptor IceFaces (JSF library) RichFaces (JSF library) PrimeFaces (JSF library) Swinglets Wicket Swingweb
Open Source Web frameworks
Where we’re going? Open Source Many APIs & tools
Trimpath Junction Macaw Makumba Calyxo RIFE DWR JOSSO JAT OpenXava Click Stripes
Brill jZeno ztemplates Aranea Web Framework Google Web Toolkit Hamlets Aurora ThinWire Pustefix RSF Roma Meta Framework
Open Source Web frameworks
Where we’re going? Open Source Many APIs & tools
Mentawai fleXive jWic Flower framework Vroom Induction Sombrero AribaWeb JVx Pandora SK
Open Source Web frameworks
wingS Helma Vaadin Wro4j Anvil Japple . . .
Where we’re going? Open Source New languages build on JVM
Where we’re going? Open Source New languages build on JVM
Why Scala over Java: - Increased productivity due to reduced verbosity - Developers can mix and match imperative and functional programming paradigms as needed - Built-in functionality for parallelism and concurrency
Where we’re going? Open Source New languages build on JVM
Where we’re going? Open Source New languages build on JVM
Now, we have a problem to solve: “there are too many choices”
How do we select now?
- Opportunity?
- Concern?
Opportunity or concerns
SW Engineering
Many factors are involved in SW engineering!
Know how!
- Usability: focusing on end users
- Focusing on problems: not technologies, tools and platforms, select the easiest ones
- Be realistic: obtainable competence - Make a list of what is important for your Software lifecycle. Identify/prioritize them & then select
- You can change your mind: most of your technology choices can change
Know how!
- Easy & Quick: select a SW that you know to be easier and quicker to prototype. - Standard vs. Open Source: check the open source products licenses.
Open Source != Free Software - Start with capabilities, not implementations
- Cost: consider the total cost
- Involve your team early
- Testing and deployment: software that makes testing difficult should be avoided
Know how!
- Avoid Lock-in: e.g. if SW has limitation, runs on a certain Operative System or environment
- New versus existing software: reuse
Thank you for listening
More Java? visit www.jdays.se November, 26-27, Gothenburg