SlideShare a Scribd company logo
1 of 85
Download to read offline
Boldly go
where the Java programming language
has never gone before
Geert Bevin, Senior Developer, Terracotta Inc.

TS-6213
Learn that you don't have to master new
languages, tools and libraries to deliver
applications that go much further than what
the standard Java™ Platform provides




                               2008 JavaOneSM Conference | java.sun.com/javaone |   2
Who is Geert Bevin?

 senior developer at Terracotta (http://terracotta.org)
 founder of Uwyn (http://uwyn.com)
 founder of RIFE (http://rifers.org)
 contributor to many open-source projects:
 Terracotta, RIFE, OpenLaszlo, Gentoo Linux,
 Bla-bla List, Drone, ...
 Sun Java Champion
 creator of native Java language continuations
 biker and gamer




                                           2008 JavaOneSM Conference | java.sun.com/javaone |   3
Agenda

 Java programming language != Java Virtual Machine (JVM™) !=
 Java platform
 Terracotta
 RIFE Continuations
 Google Web Toolkit
 Google Android




                                         2008 JavaOneSM Conference | java.sun.com/javaone |   4
Key differences

 The Java programming language provides a syntax that
 allows the expression of application logic
 The JVM provides a runtime environment that abstracts away
 the operating system and hardware differences
 The Java platform bundles the Java programming language
 and the JVM with tools and libraries to provide a complete
 development and runtime solution




                                         2008 JavaOneSM Conference | java.sun.com/javaone |   5
Different purposes

 The Java programming language is for development
 The JVM is for the execution of byte code
 The Java platform provides javac which compiles Java code to
 byte code




                                          2008 JavaOneSM Conference | java.sun.com/javaone |   6
This is what you use
     every day …




                  2008 JavaOneSM Conference | java.sun.com/javaone |   7
… but it doesn’t have to
      be this way




                    2008 JavaOneSM Conference | java.sun.com/javaone |   8
You can change the language

 Another language can be used for development
 For example:
  • Groovy
  • JavaFX™ script
  • Scala
  • JRuby
  • Jython
  • ...




                                        2008 JavaOneSM Conference | java.sun.com/javaone |   9
You can change the tooling

 Another tool can be used to create byte code
 For example:
  • ASM
  • AspectJ
  • BCEL
  • groovyc
  • ...




                                          2008 JavaOneSM Conference | java.sun.com/javaone | 10
You can change the runtime

 Another runtime can be used to execute your logic
 For example:
  • GCJ
  • Web browser
  • Dalvik virtual machine
  •…




                                          2008 JavaOneSM Conference | java.sun.com/javaone | 11
Today’s focus

 Any variation on this theme is possible
 Any of the layers can be replaced, extended or modified
 Today we'll focus on the Java programming language as the
 constant




                                         2008 JavaOneSM Conference | java.sun.com/javaone | 12
Disclaimer


 The technologies in this presentation are being covered
 from a 'boldness' perspective. No judgment is made on
whether they're a good solution nor how they compare to
alternatives. This presentation is also not intended to be a
       comprehensive overview of their capabilities




                                          2008 JavaOneSM Conference | java.sun.com/javaone | 13
Agenda

 Java programming language != JVM != Java platform
 Terracotta
 RIFE Continuations
 Google Web Toolkit
 Google Android




                                        2008 JavaOneSM Conference | java.sun.com/javaone | 14
Agenda

 Java programming language != JVM != Java platform
 Terracotta
 RIFE Continuations
 Google Web Toolkit
 Google Android




                                        2008 JavaOneSM Conference | java.sun.com/javaone | 15
What is Terracotta?


Open Source Clustering for the Java Platform

   Scalability and Availability for the JVM




                                    2008 JavaOneSM Conference | java.sun.com/javaone | 16
Terracotta Overview




                 2008 JavaOneSM Conference | java.sun.com/javaone | 17
Terracotta’s approach
  'Regular' Clustering           Different approach
   • Scale out is complex        • Cluster the JVM software
   • Requires custom Java code   • Eliminate need for custom
                                   code




                                           2008 JavaOneSM Conference | java.sun.com/javaone | 18
Main features
  Heap level replication            JVM coordination
   •   Declarative                  • Distributed synchronized
   •   No serialization             • Distributed wait()/notify()
   •   Fine grained / field Level   • Fine grained locking
   •   Only where resident          Management
  Large virtual heaps               • Runtime visibility
   • As large as available disk     • Data introspection
   • Dynamic paging                 • Cluster monitoring




                                              2008 JavaOneSM Conference | java.sun.com/javaone | 19
Terracotta Essential Features
Animation




                                2008 JavaOneSM Conference | java.sun.com/javaone | 20
Terracotta Examples




                 2008 JavaOneSM Conference | java.sun.com/javaone | 21
Example of shared state
       Hello World




                     2008 JavaOneSM Conference | java.sun.com/javaone | 22
Hello World- tutorial/HelloWorld.java




                             2008 JavaOneSM Conference | java.sun.com/javaone | 23
Hello World - tc-config.xml




                              2008 JavaOneSM Conference | java.sun.com/javaone | 24
Demo Terracotta Shared State
Hello World




                           2008 JavaOneSM Conference | java.sun.com/javaone | 25
Hello World - trying it out
  Start the server:
  $ start-tc-server.sh
  Start a client:
  $ dso-java.sh -Dtc.config=tc-config.xml
  tutorial.HelloWorld
  Output:
  Hello Thu Dec 13 17:46:58 CET 2007
  After starting the 2nd client:
  Hello Thu Dec 13 17:46:58 CET 2007
  Hello Thu Dec 13 17:47:06 CET 2007
  The state is preserved in the server between executions




                                          2008 JavaOneSM Conference | java.sun.com/javaone | 26
Example of coordination
    Enhanced Hello World
  using java.util.concurrent




                          2008 JavaOneSM Conference | java.sun.com/javaone | 27
Coordination - HelloWorldConcurrent.java




                             2008 JavaOneSM Conference | java.sun.com/javaone | 28
Coordination - tc-config-concurrent.xml




                              2008 JavaOneSM Conference | java.sun.com/javaone | 29
Demo Terracotta Coordination
Enhanced Hello World




                          2008 JavaOneSM Conference | java.sun.com/javaone | 30
Coordination - trying it out
  Start the server:
  $ start-tc-server.sh
  Start a client:
  $ dso-java.sh -Dtc.config=tc-config-concurrent.xml
      -Dnodes=2 tutorial.HelloWorldConcurrent
  It just hangs there
  After starting the 2nd client:
  Hello Thu Dec 13 19:12:38 CET 2007
  Hello Thu Dec 13 19:13:56 CET 2007
  The cyclic barrier is clustered across JVMs




                                            2008 JavaOneSM Conference | java.sun.com/javaone | 31
Terracotta’s Boldness




                  2008 JavaOneSM Conference | java.sun.com/javaone | 32
Terracotta's Boldness

 Plug into the JVM with a bootjar
 Translate threads to cluster nodes
 Modify getfield, putfield, monitorenter,
 monitorexit byte code instructions to work across the
 cluster
 Java Memory Model as a contract for accessing shared state
 and coordination across the cluster




                                          2008 JavaOneSM Conference | java.sun.com/javaone | 33
Agenda

 Java programming language != JVM != Java platform
 Terracotta
 RIFE Continuations
 Google Web Toolkit
 Google Android




                                        2008 JavaOneSM Conference | java.sun.com/javaone | 34
Agenda

 Java programming language != JVM != Java platform
 Terracotta
 RIFE Continuations
 Google Web Toolkit
 Google Android




                                        2008 JavaOneSM Conference | java.sun.com/javaone | 35
What is RIFE?


 Full-stack component framework to
quickly and consistently develop and
   maintain Java web applications




                              2008 JavaOneSM Conference | java.sun.com/javaone | 36
What are continuations?




                   2008 JavaOneSM Conference | java.sun.com/javaone | 37
… continuations are like


      Save Game




                    2008 JavaOneSM Conference | java.sun.com/javaone | 38
… Save Game


can be performed at certain locations in the game
(or anywhere, depending on the type of game)
captures the progress and your possessions
several saved games can exist at once




                                       2008 JavaOneSM Conference | java.sun.com/javaone | 39
… but they are also like


      Load Game




                    2008 JavaOneSM Conference | java.sun.com/javaone | 40
… Load Game


retrieve any saved game
load the saved game
restore the progress and your possessions
resume exactly where you left off




                                       2008 JavaOneSM Conference | java.sun.com/javaone | 41
… all we have to do is replace


       Game       Application
 Saved Game       Continuation
    Progress      Location
  Possession      State




                          2008 JavaOneSM Conference | java.sun.com/javaone | 42
… Pause
can be performed at certain locations in the game
captures the progress and your possessions
          the progress    your possessions
several saved games can exist at once
         saved games


                     … Resume
retrieve any saved games
             saved games
load the saved game
         saved game
restore the progress and your possessions
resume the progress you leftpossessions
        exactly where your off




                                            2008 JavaOneSM Conference | java.sun.com/javaone | 43
… Pause
can be performed at certain locations in the game
captures the progress and your possessions
several saved games can exist at once


                     … Resume
retrieve any saved games
load the saved game
restore the progress and your possessions
resume exactly where you left off



                                            2008 JavaOneSM Conference | java.sun.com/javaone | 44
… Pause
can be performed at certain locations in the application
                                             game
captures the progress and the state
          the location    your possessions
several saved games can exist at once
        continuations


                      … Resume
retrieve any saved games
             continuation
load the saved game
         continuation
restore the progress and your possessions
resume the location you left off
        exactly where the state




                                            2008 JavaOneSM Conference | java.sun.com/javaone | 45
Concretely




             2008 JavaOneSM Conference | java.sun.com/javaone | 46
Concretely : pseudo code




                           2008 JavaOneSM Conference | java.sun.com/javaone | 47
Concretely : pseudo code




  Program output is
  Let's call this backwards
  Context and location are stored in a variable
  Multiple continuations can be active at once


                                           2008 JavaOneSM Conference | java.sun.com/javaone | 48
Continuations Example
  Number guessing game
   (as a web application)




                        2008 JavaOneSM Conference | java.sun.com/javaone | 49
Number Guessing - Game.java




                              2008 JavaOneSM Conference | java.sun.com/javaone | 50
Demo Continuations
Number Guessing Game Running & Debugging




                                   2008 JavaOneSM Conference | java.sun.com/javaone | 51
RIFE’s Boldness




                  2008 JavaOneSM Conference | java.sun.com/javaone | 52
RIFE’s Boldness

 Java method calls are trapped at runtime when classes are
 loaded to rewrite the code sections they're executing in
 (pause(), call(), answer())
 Intuitive state handling, requiring no serialization
 Regular Java language statements direct application control
 flow
 Regular Java development tools like debuggers and IDEs can
 be used to develop, document and debug application control
 flow
 Continuation trees for backward and forward stepping



                                          2008 JavaOneSM Conference | java.sun.com/javaone | 53
Agenda

 Java programming language != JVM != Java platform
 Terracotta
 RIFE Continuations
 Google Web Toolkit
 Google Android




                                        2008 JavaOneSM Conference | java.sun.com/javaone | 54
Agenda

 Java programming language != JVM != Java platform
 Terracotta
 RIFE Continuations
 Google Web Toolkit
 Google Android




                                        2008 JavaOneSM Conference | java.sun.com/javaone | 55
What is Google Web Toolkit?


Create AJAX applications in the Java programming language
   using regular Java tools and deploy them to browser-
        compliant HTML and Javascript™ technology




                                        2008 JavaOneSM Conference | java.sun.com/javaone | 56
Google Web Toolkit Overview




                     2008 JavaOneSM Conference | java.sun.com/javaone | 57
Google Web Toolkit approach
  'Regular' Ajax Dev                  Different approach
   • Write Javascript code and         • Write Ajax applications in the
     DHTML                               Java platform
   • Learn all the intricacies         • Compile Java code to Javascript
                                         code


            Difficult to test       Client-side debuggers

           Javascript versions Toolkit (GWT)
                  Google Web Browser differences
           use Java platform, standard APIs and your packaging
            Smart text editors          Resource regular tools

           Ajax Libraries        Design RPC API and format


                                                 2008 JavaOneSM Conference | java.sun.com/javaone | 58
GWT’s main features

  Two main execution modes
   • Hosted mode
      • Executed with the JVM, no generated Javascript source code
      • Embedded browser hooks into Java libraries
      • Code-test-debug as regular Java applications
   • Web mode
      • Compiles Java source code to Javascript source code
      • Runs inside browser without plugins
  Standardized RPC
   • Implement RemoteService interface
   • Relies on serialization for arguments and return values
   • Supports asynchronous method calls

                                                     2008 JavaOneSM Conference | java.sun.com/javaone | 59
GWT Examples
  (with Eclipse)




                   2008 JavaOneSM Conference | java.sun.com/javaone | 60
Hello World




              2008 JavaOneSM Conference | java.sun.com/javaone | 61
GWT Hello World
  Create a new project and generate the required files




  Import project into Eclipse




                                          2008 JavaOneSM Conference | java.sun.com/javaone | 62
Hello World - com/client/HelloWorldApp.java




                                2008 JavaOneSM Conference | java.sun.com/javaone | 63
Hello World - com/public/HelloWorldApp.html




                               2008 JavaOneSM Conference | java.sun.com/javaone | 64
Demo GWT
Hello World




              2008 JavaOneSM Conference | java.sun.com/javaone | 65
RPC




      2008 JavaOneSM Conference | java.sun.com/javaone | 66
RPC Services
 com/client/GreeterService.java


 com/services/GreeterServiceImpl.java




 com/client/GreeterServiceAsync.java




                                        2008 JavaOneSM Conference | java.sun.com/javaone | 67
RPC GWT Module - com/RpcApp.gwt.xml




                            2008 JavaOneSM Conference | java.sun.com/javaone | 68
RPC App - com/client/RpcApp.java                               1/2




                            2008 JavaOneSM Conference | java.sun.com/javaone | 69
RPC App - com/client/RpcApp.java                               2/2




                            2008 JavaOneSM Conference | java.sun.com/javaone | 70
Demo GWT
RPC




           2008 JavaOneSM Conference | java.sun.com/javaone | 71
GWT’s Boldness




                 2008 JavaOneSM Conference | java.sun.com/javaone | 72
GWT’s Boldness

 Two execution modes simplify both development and
 deployment
 Browser is hooked into Java libraries to provide real
 debugging during hosted mode
 The Java source code is compiled to the Javascript source code
 during web mode to hide the difficulties of Ajax/DHTML
 development




                                           2008 JavaOneSM Conference | java.sun.com/javaone | 73
Agenda

 Java programming language != JVM != Java platform
 Terracotta
 RIFE Continuations
 Google Web Toolkit
 Google Android




                                        2008 JavaOneSM Conference | java.sun.com/javaone | 74
Agenda

 Java programming language != JVM != Java platform
 Terracotta
 RIFE Continuations
 Google Web Toolkit
 Google Android




                                        2008 JavaOneSM Conference | java.sun.com/javaone | 75
What is Google Android?


 A platform for mobile devices where
    software is written in the Java
language and run on Dalvik, a custom
  virtual machine for embedded use




                             2008 JavaOneSM Conference | java.sun.com/javaone | 76
Google Android Overview




                   2008 JavaOneSM Conference | java.sun.com/javaone | 77
Google Android approach

 'Regular' Mobile Dev              Different approach
 • Proprietary platform            • Open-source platform
 • Java™ Platform, Micro Edition   • All applications in Java
   (Java ME) is just another         programming language
   application                     • Dedicated virtual machine
 • Java applications run in the      per application
   same virtual machine




                                              2008 JavaOneSM Conference | java.sun.com/javaone | 78
Google Android Architecture




                              2008 JavaOneSM Conference | java.sun.com/javaone | 79
Demo Google Android
Too many snippets and resources to
show code in slides




                                     2008 JavaOneSM Conference | java.sun.com/javaone | 80
Google Android’s Boldness




                    2008 JavaOneSM Conference | java.sun.com/javaone | 81
Google Android’s Boldness

 Program everything in the Java programming language
 Only use Android's Java Platform Runtime Environment (JRE),
 which includes supported library classes
 Compile with javac and convert to Android bytecode for the
 Dalvik VM (.dex files)
 Debug through the Dalvik Debug Monitor Server (DDMS)
 which forwards ports from the emulator or device to the IDE




                                          2008 JavaOneSM Conference | java.sun.com/javaone | 82
Agenda

 Java programming language != JVM != Java platform
 Terracotta
 RIFE Continuations
 Google Web Toolkit
 Google Android




                                        2008 JavaOneSM Conference | java.sun.com/javaone | 83
Conclusion

 Using just the Java language you're able to do:
  • Transparent Clustering and Coordination:
    Terracotta (http://www.terracotta.org)
  • Intuitive application control flow:
    RIFE Continuations (http://rifers.org)
  • Ajax client application development:
    Google Web Toolkit (http://code.google.com/webtoolkit)
  • First-class mobile application development:
    Google Android (http://code.google.com/android)
 Without learning new languages and tools, all these
 possibilities open up



                                                2008 JavaOneSM Conference | java.sun.com/javaone | 84
Boldly go where the Java programming
language has never gone before
Geert Bevin

http://terracotta.org - http://rifers.org

More Related Content

What's hot

Project Zero For Javapolis 2007
Project Zero For Javapolis 2007Project Zero For Javapolis 2007
Project Zero For Javapolis 2007Jason McGee
 
How we took our server side application to the cloud and liked what we got
How we took our server side application to the cloud and liked what we gotHow we took our server side application to the cloud and liked what we got
How we took our server side application to the cloud and liked what we gotBaruch Sadogursky
 
What's New in the JVM in Java 8?
What's New in the JVM in Java 8?What's New in the JVM in Java 8?
What's New in the JVM in Java 8?Azul Systems Inc.
 
Build Trust in Your Build-to-Deployment Flow!
Build Trust in Your Build-to-Deployment Flow!Build Trust in Your Build-to-Deployment Flow!
Build Trust in Your Build-to-Deployment Flow!Baruch Sadogursky
 
Yocto Project Dev Day Prague 2017 - Advanced class - Kernel modules with eSDK
Yocto Project Dev Day Prague 2017 - Advanced class - Kernel modules with eSDKYocto Project Dev Day Prague 2017 - Advanced class - Kernel modules with eSDK
Yocto Project Dev Day Prague 2017 - Advanced class - Kernel modules with eSDKMarco Cavallini
 
Autobuilder2 Yocto Project Summit Lyon 2019
Autobuilder2 Yocto Project Summit Lyon 2019Autobuilder2 Yocto Project Summit Lyon 2019
Autobuilder2 Yocto Project Summit Lyon 2019Marco Cavallini
 
Deploying Java EE 6 Apps in a Cluster: GlassFish 3.1 at Dallas Tech Fest 2011
Deploying Java EE 6 Apps in a Cluster: GlassFish 3.1 at Dallas Tech Fest 2011Deploying Java EE 6 Apps in a Cluster: GlassFish 3.1 at Dallas Tech Fest 2011
Deploying Java EE 6 Apps in a Cluster: GlassFish 3.1 at Dallas Tech Fest 2011Arun Gupta
 
Marco Cavallini @ LinuxLab 2018 : Workshop Yocto Project, an automatic genera...
Marco Cavallini @ LinuxLab 2018 : Workshop Yocto Project, an automatic genera...Marco Cavallini @ LinuxLab 2018 : Workshop Yocto Project, an automatic genera...
Marco Cavallini @ LinuxLab 2018 : Workshop Yocto Project, an automatic genera...Marco Cavallini
 
Tuscany : Applying OSGi After The Fact
Tuscany : Applying  OSGi After The FactTuscany : Applying  OSGi After The Fact
Tuscany : Applying OSGi After The FactLuciano Resende
 
Introduction to Java
Introduction to Java Introduction to Java
Introduction to Java Hitesh-Java
 
Java Presentation
Java PresentationJava Presentation
Java PresentationAmr Salah
 
GlassFish in Production Environments
GlassFish in Production EnvironmentsGlassFish in Production Environments
GlassFish in Production EnvironmentsBruno Borges
 
Monitoring of Web Applications and GlassFish for Performance and Availability...
Monitoring of Web Applications and GlassFish for Performance and Availability...Monitoring of Web Applications and GlassFish for Performance and Availability...
Monitoring of Web Applications and GlassFish for Performance and Availability...SL Corporation
 
LUGOD Raspberry Pi Hacking
LUGOD Raspberry Pi HackingLUGOD Raspberry Pi Hacking
LUGOD Raspberry Pi HackingStephen Chin
 

What's hot (19)

Project Zero For Javapolis 2007
Project Zero For Javapolis 2007Project Zero For Javapolis 2007
Project Zero For Javapolis 2007
 
How we took our server side application to the cloud and liked what we got
How we took our server side application to the cloud and liked what we gotHow we took our server side application to the cloud and liked what we got
How we took our server side application to the cloud and liked what we got
 
What's New in the JVM in Java 8?
What's New in the JVM in Java 8?What's New in the JVM in Java 8?
What's New in the JVM in Java 8?
 
History of Java 1/2
History of Java 1/2History of Java 1/2
History of Java 1/2
 
Advanced Effects Oscon 2007
Advanced Effects   Oscon 2007Advanced Effects   Oscon 2007
Advanced Effects Oscon 2007
 
Build Trust in Your Build-to-Deployment Flow!
Build Trust in Your Build-to-Deployment Flow!Build Trust in Your Build-to-Deployment Flow!
Build Trust in Your Build-to-Deployment Flow!
 
Yocto Project Dev Day Prague 2017 - Advanced class - Kernel modules with eSDK
Yocto Project Dev Day Prague 2017 - Advanced class - Kernel modules with eSDKYocto Project Dev Day Prague 2017 - Advanced class - Kernel modules with eSDK
Yocto Project Dev Day Prague 2017 - Advanced class - Kernel modules with eSDK
 
Java basics.....
Java basics.....Java basics.....
Java basics.....
 
Autobuilder2 Yocto Project Summit Lyon 2019
Autobuilder2 Yocto Project Summit Lyon 2019Autobuilder2 Yocto Project Summit Lyon 2019
Autobuilder2 Yocto Project Summit Lyon 2019
 
Deploying Java EE 6 Apps in a Cluster: GlassFish 3.1 at Dallas Tech Fest 2011
Deploying Java EE 6 Apps in a Cluster: GlassFish 3.1 at Dallas Tech Fest 2011Deploying Java EE 6 Apps in a Cluster: GlassFish 3.1 at Dallas Tech Fest 2011
Deploying Java EE 6 Apps in a Cluster: GlassFish 3.1 at Dallas Tech Fest 2011
 
Marco Cavallini @ LinuxLab 2018 : Workshop Yocto Project, an automatic genera...
Marco Cavallini @ LinuxLab 2018 : Workshop Yocto Project, an automatic genera...Marco Cavallini @ LinuxLab 2018 : Workshop Yocto Project, an automatic genera...
Marco Cavallini @ LinuxLab 2018 : Workshop Yocto Project, an automatic genera...
 
Tuscany : Applying OSGi After The Fact
Tuscany : Applying  OSGi After The FactTuscany : Applying  OSGi After The Fact
Tuscany : Applying OSGi After The Fact
 
Ausoug glassfish perth
Ausoug glassfish perthAusoug glassfish perth
Ausoug glassfish perth
 
Introduction to Java
Introduction to Java Introduction to Java
Introduction to Java
 
Java Presentation
Java PresentationJava Presentation
Java Presentation
 
GlassFish in Production Environments
GlassFish in Production EnvironmentsGlassFish in Production Environments
GlassFish in Production Environments
 
Java
JavaJava
Java
 
Monitoring of Web Applications and GlassFish for Performance and Availability...
Monitoring of Web Applications and GlassFish for Performance and Availability...Monitoring of Web Applications and GlassFish for Performance and Availability...
Monitoring of Web Applications and GlassFish for Performance and Availability...
 
LUGOD Raspberry Pi Hacking
LUGOD Raspberry Pi HackingLUGOD Raspberry Pi Hacking
LUGOD Raspberry Pi Hacking
 

Viewers also liked

Beyond Java: Go for Java developers
Beyond Java: Go for Java developersBeyond Java: Go for Java developers
Beyond Java: Go for Java developersNetcetera
 
A Recovering Java Developer Learns to Go
A Recovering Java Developer Learns to GoA Recovering Java Developer Learns to Go
A Recovering Java Developer Learns to GoMatt Stine
 
Golang server design pattern
Golang server design patternGolang server design pattern
Golang server design pattern理 傅
 
Golang basics for Java developers - Part 1
Golang basics for Java developers - Part 1Golang basics for Java developers - Part 1
Golang basics for Java developers - Part 1Robert Stern
 
HTTP/2 and Java: Current Status
HTTP/2 and Java: Current StatusHTTP/2 and Java: Current Status
HTTP/2 and Java: Current StatusSimone Bordet
 

Viewers also liked (8)

Beyond Java: Go for Java developers
Beyond Java: Go for Java developersBeyond Java: Go for Java developers
Beyond Java: Go for Java developers
 
A Recovering Java Developer Learns to Go
A Recovering Java Developer Learns to GoA Recovering Java Developer Learns to Go
A Recovering Java Developer Learns to Go
 
Golang server design pattern
Golang server design patternGolang server design pattern
Golang server design pattern
 
Golang for OO Programmers
Golang for OO ProgrammersGolang for OO Programmers
Golang for OO Programmers
 
Practical Look at Erlang
Practical Look at ErlangPractical Look at Erlang
Practical Look at Erlang
 
Golang basics for Java developers - Part 1
Golang basics for Java developers - Part 1Golang basics for Java developers - Part 1
Golang basics for Java developers - Part 1
 
HTTP/2 and Java: Current Status
HTTP/2 and Java: Current StatusHTTP/2 and Java: Current Status
HTTP/2 and Java: Current Status
 
HTTP/2 Comes to Java
HTTP/2 Comes to JavaHTTP/2 Comes to Java
HTTP/2 Comes to Java
 

Similar to Boldly go where the Java programming language has never gone before

JRuby on Rails Deployment: What They Didn't Tell You
JRuby on Rails Deployment: What They Didn't Tell YouJRuby on Rails Deployment: What They Didn't Tell You
JRuby on Rails Deployment: What They Didn't Tell Youelliando dias
 
Writing Your Own JSR-Compliant, Domain-Specific Scripting Language
Writing Your Own JSR-Compliant, Domain-Specific Scripting LanguageWriting Your Own JSR-Compliant, Domain-Specific Scripting Language
Writing Your Own JSR-Compliant, Domain-Specific Scripting Languageelliando dias
 
blueMarine Or Why You Should Really Ship Swing Applications
blueMarine  Or Why You Should Really Ship Swing  Applications blueMarine  Or Why You Should Really Ship Swing  Applications
blueMarine Or Why You Should Really Ship Swing Applications Fabrizio Giudici
 
Virtualizing a Virtual Machine
Virtualizing a Virtual MachineVirtualizing a Virtual Machine
Virtualizing a Virtual Machineelliando dias
 
It pro dev_birbilis_20101127_en
It pro dev_birbilis_20101127_enIt pro dev_birbilis_20101127_en
It pro dev_birbilis_20101127_enGeorge Birbilis
 
JavaOne 2008: Designing GUIs 101
JavaOne 2008: Designing GUIs 101JavaOne 2008: Designing GUIs 101
JavaOne 2008: Designing GUIs 101Jeff Hoffman
 
Polygot Java EE on the GraalVM
Polygot Java EE on the GraalVMPolygot Java EE on the GraalVM
Polygot Java EE on the GraalVMRyan Cuprak
 
javalightspeed-jakartatech-2023.pdf
javalightspeed-jakartatech-2023.pdfjavalightspeed-jakartatech-2023.pdf
javalightspeed-jakartatech-2023.pdfRichHagarty
 
Chapter 1. java programming language overview
Chapter 1. java programming language overviewChapter 1. java programming language overview
Chapter 1. java programming language overviewJong Soon Bok
 
Introduction to java
Introduction to java Introduction to java
Introduction to java Java Lover
 
D. Andreadis, Red Hat: Concepts and technical overview of Quarkus
D. Andreadis, Red Hat: Concepts and technical overview of QuarkusD. Andreadis, Red Hat: Concepts and technical overview of Quarkus
D. Andreadis, Red Hat: Concepts and technical overview of QuarkusUni Systems S.M.S.A.
 
Rapid Network Application Development with Apache MINA
Rapid Network Application Development with Apache MINARapid Network Application Development with Apache MINA
Rapid Network Application Development with Apache MINAtrustinlee
 
The Evolution of Java
The Evolution of JavaThe Evolution of Java
The Evolution of JavaFu Cheng
 
Use of Java™ Technology-Based Class Loaders to Design and Implement a Java P...
Use of Java™ Technology-Based Class Loaders  to Design and Implement a Java P...Use of Java™ Technology-Based Class Loaders  to Design and Implement a Java P...
Use of Java™ Technology-Based Class Loaders to Design and Implement a Java P...gustavoeliano
 
What is Java and How its is Generated
What is Java and How its is GeneratedWhat is Java and How its is Generated
What is Java and How its is Generatedjavaease
 
[Challenge:Future] Chocoholic
[Challenge:Future] Chocoholic [Challenge:Future] Chocoholic
[Challenge:Future] Chocoholic Challenge:Future
 

Similar to Boldly go where the Java programming language has never gone before (20)

JRuby on Rails Deployment: What They Didn't Tell You
JRuby on Rails Deployment: What They Didn't Tell YouJRuby on Rails Deployment: What They Didn't Tell You
JRuby on Rails Deployment: What They Didn't Tell You
 
Writing Your Own JSR-Compliant, Domain-Specific Scripting Language
Writing Your Own JSR-Compliant, Domain-Specific Scripting LanguageWriting Your Own JSR-Compliant, Domain-Specific Scripting Language
Writing Your Own JSR-Compliant, Domain-Specific Scripting Language
 
blueMarine Or Why You Should Really Ship Swing Applications
blueMarine  Or Why You Should Really Ship Swing  Applications blueMarine  Or Why You Should Really Ship Swing  Applications
blueMarine Or Why You Should Really Ship Swing Applications
 
Virtualizing a Virtual Machine
Virtualizing a Virtual MachineVirtualizing a Virtual Machine
Virtualizing a Virtual Machine
 
Java Cloud and Container Ready
Java Cloud and Container ReadyJava Cloud and Container Ready
Java Cloud and Container Ready
 
It pro dev_birbilis_20101127_en
It pro dev_birbilis_20101127_enIt pro dev_birbilis_20101127_en
It pro dev_birbilis_20101127_en
 
Java 2012 conference keynote - Java Strategy & Roadmap - WebLogic & GlassFish...
Java 2012 conference keynote - Java Strategy & Roadmap - WebLogic & GlassFish...Java 2012 conference keynote - Java Strategy & Roadmap - WebLogic & GlassFish...
Java 2012 conference keynote - Java Strategy & Roadmap - WebLogic & GlassFish...
 
JavaOne 2008: Designing GUIs 101
JavaOne 2008: Designing GUIs 101JavaOne 2008: Designing GUIs 101
JavaOne 2008: Designing GUIs 101
 
Polygot Java EE on the GraalVM
Polygot Java EE on the GraalVMPolygot Java EE on the GraalVM
Polygot Java EE on the GraalVM
 
javalightspeed-jakartatech-2023.pdf
javalightspeed-jakartatech-2023.pdfjavalightspeed-jakartatech-2023.pdf
javalightspeed-jakartatech-2023.pdf
 
Chapter 1. java programming language overview
Chapter 1. java programming language overviewChapter 1. java programming language overview
Chapter 1. java programming language overview
 
Core Java
Core JavaCore Java
Core Java
 
Introduction to java
Introduction to java Introduction to java
Introduction to java
 
D. Andreadis, Red Hat: Concepts and technical overview of Quarkus
D. Andreadis, Red Hat: Concepts and technical overview of QuarkusD. Andreadis, Red Hat: Concepts and technical overview of Quarkus
D. Andreadis, Red Hat: Concepts and technical overview of Quarkus
 
Rapid Network Application Development with Apache MINA
Rapid Network Application Development with Apache MINARapid Network Application Development with Apache MINA
Rapid Network Application Development with Apache MINA
 
The Evolution of Java
The Evolution of JavaThe Evolution of Java
The Evolution of Java
 
Java8 launch AMIS Services by Lucas Jellema
Java8 launch AMIS Services by Lucas Jellema Java8 launch AMIS Services by Lucas Jellema
Java8 launch AMIS Services by Lucas Jellema
 
Use of Java™ Technology-Based Class Loaders to Design and Implement a Java P...
Use of Java™ Technology-Based Class Loaders  to Design and Implement a Java P...Use of Java™ Technology-Based Class Loaders  to Design and Implement a Java P...
Use of Java™ Technology-Based Class Loaders to Design and Implement a Java P...
 
What is Java and How its is Generated
What is Java and How its is GeneratedWhat is Java and How its is Generated
What is Java and How its is Generated
 
[Challenge:Future] Chocoholic
[Challenge:Future] Chocoholic [Challenge:Future] Chocoholic
[Challenge:Future] Chocoholic
 

More from elliando dias

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slideselliando dias
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScriptelliando dias
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structureselliando dias
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de containerelliando dias
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agilityelliando dias
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Librarieselliando dias
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!elliando dias
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Webelliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduinoelliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorceryelliando dias
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Designelliando dias
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makeselliando dias
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.elliando dias
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebookelliando dias
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Studyelliando dias
 

More from elliando dias (20)

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScript
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structures
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de container
 
Geometria Projetiva
Geometria ProjetivaGeometria Projetiva
Geometria Projetiva
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
 
Ragel talk
Ragel talkRagel talk
Ragel talk
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
 
Rango
RangoRango
Rango
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study
 

Recently uploaded

Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 

Recently uploaded (20)

Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 

Boldly go where the Java programming language has never gone before

  • 1. Boldly go where the Java programming language has never gone before Geert Bevin, Senior Developer, Terracotta Inc. TS-6213
  • 2. Learn that you don't have to master new languages, tools and libraries to deliver applications that go much further than what the standard Java™ Platform provides 2008 JavaOneSM Conference | java.sun.com/javaone | 2
  • 3. Who is Geert Bevin? senior developer at Terracotta (http://terracotta.org) founder of Uwyn (http://uwyn.com) founder of RIFE (http://rifers.org) contributor to many open-source projects: Terracotta, RIFE, OpenLaszlo, Gentoo Linux, Bla-bla List, Drone, ... Sun Java Champion creator of native Java language continuations biker and gamer 2008 JavaOneSM Conference | java.sun.com/javaone | 3
  • 4. Agenda Java programming language != Java Virtual Machine (JVM™) != Java platform Terracotta RIFE Continuations Google Web Toolkit Google Android 2008 JavaOneSM Conference | java.sun.com/javaone | 4
  • 5. Key differences The Java programming language provides a syntax that allows the expression of application logic The JVM provides a runtime environment that abstracts away the operating system and hardware differences The Java platform bundles the Java programming language and the JVM with tools and libraries to provide a complete development and runtime solution 2008 JavaOneSM Conference | java.sun.com/javaone | 5
  • 6. Different purposes The Java programming language is for development The JVM is for the execution of byte code The Java platform provides javac which compiles Java code to byte code 2008 JavaOneSM Conference | java.sun.com/javaone | 6
  • 7. This is what you use every day … 2008 JavaOneSM Conference | java.sun.com/javaone | 7
  • 8. … but it doesn’t have to be this way 2008 JavaOneSM Conference | java.sun.com/javaone | 8
  • 9. You can change the language Another language can be used for development For example: • Groovy • JavaFX™ script • Scala • JRuby • Jython • ... 2008 JavaOneSM Conference | java.sun.com/javaone | 9
  • 10. You can change the tooling Another tool can be used to create byte code For example: • ASM • AspectJ • BCEL • groovyc • ... 2008 JavaOneSM Conference | java.sun.com/javaone | 10
  • 11. You can change the runtime Another runtime can be used to execute your logic For example: • GCJ • Web browser • Dalvik virtual machine •… 2008 JavaOneSM Conference | java.sun.com/javaone | 11
  • 12. Today’s focus Any variation on this theme is possible Any of the layers can be replaced, extended or modified Today we'll focus on the Java programming language as the constant 2008 JavaOneSM Conference | java.sun.com/javaone | 12
  • 13. Disclaimer The technologies in this presentation are being covered from a 'boldness' perspective. No judgment is made on whether they're a good solution nor how they compare to alternatives. This presentation is also not intended to be a comprehensive overview of their capabilities 2008 JavaOneSM Conference | java.sun.com/javaone | 13
  • 14. Agenda Java programming language != JVM != Java platform Terracotta RIFE Continuations Google Web Toolkit Google Android 2008 JavaOneSM Conference | java.sun.com/javaone | 14
  • 15. Agenda Java programming language != JVM != Java platform Terracotta RIFE Continuations Google Web Toolkit Google Android 2008 JavaOneSM Conference | java.sun.com/javaone | 15
  • 16. What is Terracotta? Open Source Clustering for the Java Platform Scalability and Availability for the JVM 2008 JavaOneSM Conference | java.sun.com/javaone | 16
  • 17. Terracotta Overview 2008 JavaOneSM Conference | java.sun.com/javaone | 17
  • 18. Terracotta’s approach 'Regular' Clustering Different approach • Scale out is complex • Cluster the JVM software • Requires custom Java code • Eliminate need for custom code 2008 JavaOneSM Conference | java.sun.com/javaone | 18
  • 19. Main features Heap level replication JVM coordination • Declarative • Distributed synchronized • No serialization • Distributed wait()/notify() • Fine grained / field Level • Fine grained locking • Only where resident Management Large virtual heaps • Runtime visibility • As large as available disk • Data introspection • Dynamic paging • Cluster monitoring 2008 JavaOneSM Conference | java.sun.com/javaone | 19
  • 20. Terracotta Essential Features Animation 2008 JavaOneSM Conference | java.sun.com/javaone | 20
  • 21. Terracotta Examples 2008 JavaOneSM Conference | java.sun.com/javaone | 21
  • 22. Example of shared state Hello World 2008 JavaOneSM Conference | java.sun.com/javaone | 22
  • 23. Hello World- tutorial/HelloWorld.java 2008 JavaOneSM Conference | java.sun.com/javaone | 23
  • 24. Hello World - tc-config.xml 2008 JavaOneSM Conference | java.sun.com/javaone | 24
  • 25. Demo Terracotta Shared State Hello World 2008 JavaOneSM Conference | java.sun.com/javaone | 25
  • 26. Hello World - trying it out Start the server: $ start-tc-server.sh Start a client: $ dso-java.sh -Dtc.config=tc-config.xml tutorial.HelloWorld Output: Hello Thu Dec 13 17:46:58 CET 2007 After starting the 2nd client: Hello Thu Dec 13 17:46:58 CET 2007 Hello Thu Dec 13 17:47:06 CET 2007 The state is preserved in the server between executions 2008 JavaOneSM Conference | java.sun.com/javaone | 26
  • 27. Example of coordination Enhanced Hello World using java.util.concurrent 2008 JavaOneSM Conference | java.sun.com/javaone | 27
  • 28. Coordination - HelloWorldConcurrent.java 2008 JavaOneSM Conference | java.sun.com/javaone | 28
  • 29. Coordination - tc-config-concurrent.xml 2008 JavaOneSM Conference | java.sun.com/javaone | 29
  • 30. Demo Terracotta Coordination Enhanced Hello World 2008 JavaOneSM Conference | java.sun.com/javaone | 30
  • 31. Coordination - trying it out Start the server: $ start-tc-server.sh Start a client: $ dso-java.sh -Dtc.config=tc-config-concurrent.xml -Dnodes=2 tutorial.HelloWorldConcurrent It just hangs there After starting the 2nd client: Hello Thu Dec 13 19:12:38 CET 2007 Hello Thu Dec 13 19:13:56 CET 2007 The cyclic barrier is clustered across JVMs 2008 JavaOneSM Conference | java.sun.com/javaone | 31
  • 32. Terracotta’s Boldness 2008 JavaOneSM Conference | java.sun.com/javaone | 32
  • 33. Terracotta's Boldness Plug into the JVM with a bootjar Translate threads to cluster nodes Modify getfield, putfield, monitorenter, monitorexit byte code instructions to work across the cluster Java Memory Model as a contract for accessing shared state and coordination across the cluster 2008 JavaOneSM Conference | java.sun.com/javaone | 33
  • 34. Agenda Java programming language != JVM != Java platform Terracotta RIFE Continuations Google Web Toolkit Google Android 2008 JavaOneSM Conference | java.sun.com/javaone | 34
  • 35. Agenda Java programming language != JVM != Java platform Terracotta RIFE Continuations Google Web Toolkit Google Android 2008 JavaOneSM Conference | java.sun.com/javaone | 35
  • 36. What is RIFE? Full-stack component framework to quickly and consistently develop and maintain Java web applications 2008 JavaOneSM Conference | java.sun.com/javaone | 36
  • 37. What are continuations? 2008 JavaOneSM Conference | java.sun.com/javaone | 37
  • 38. … continuations are like Save Game 2008 JavaOneSM Conference | java.sun.com/javaone | 38
  • 39. … Save Game can be performed at certain locations in the game (or anywhere, depending on the type of game) captures the progress and your possessions several saved games can exist at once 2008 JavaOneSM Conference | java.sun.com/javaone | 39
  • 40. … but they are also like Load Game 2008 JavaOneSM Conference | java.sun.com/javaone | 40
  • 41. … Load Game retrieve any saved game load the saved game restore the progress and your possessions resume exactly where you left off 2008 JavaOneSM Conference | java.sun.com/javaone | 41
  • 42. … all we have to do is replace Game  Application Saved Game  Continuation Progress  Location Possession  State 2008 JavaOneSM Conference | java.sun.com/javaone | 42
  • 43. … Pause can be performed at certain locations in the game captures the progress and your possessions the progress your possessions several saved games can exist at once saved games … Resume retrieve any saved games saved games load the saved game saved game restore the progress and your possessions resume the progress you leftpossessions exactly where your off 2008 JavaOneSM Conference | java.sun.com/javaone | 43
  • 44. … Pause can be performed at certain locations in the game captures the progress and your possessions several saved games can exist at once … Resume retrieve any saved games load the saved game restore the progress and your possessions resume exactly where you left off 2008 JavaOneSM Conference | java.sun.com/javaone | 44
  • 45. … Pause can be performed at certain locations in the application game captures the progress and the state the location your possessions several saved games can exist at once continuations … Resume retrieve any saved games continuation load the saved game continuation restore the progress and your possessions resume the location you left off exactly where the state 2008 JavaOneSM Conference | java.sun.com/javaone | 45
  • 46. Concretely 2008 JavaOneSM Conference | java.sun.com/javaone | 46
  • 47. Concretely : pseudo code 2008 JavaOneSM Conference | java.sun.com/javaone | 47
  • 48. Concretely : pseudo code Program output is Let's call this backwards Context and location are stored in a variable Multiple continuations can be active at once 2008 JavaOneSM Conference | java.sun.com/javaone | 48
  • 49. Continuations Example Number guessing game (as a web application) 2008 JavaOneSM Conference | java.sun.com/javaone | 49
  • 50. Number Guessing - Game.java 2008 JavaOneSM Conference | java.sun.com/javaone | 50
  • 51. Demo Continuations Number Guessing Game Running & Debugging 2008 JavaOneSM Conference | java.sun.com/javaone | 51
  • 52. RIFE’s Boldness 2008 JavaOneSM Conference | java.sun.com/javaone | 52
  • 53. RIFE’s Boldness Java method calls are trapped at runtime when classes are loaded to rewrite the code sections they're executing in (pause(), call(), answer()) Intuitive state handling, requiring no serialization Regular Java language statements direct application control flow Regular Java development tools like debuggers and IDEs can be used to develop, document and debug application control flow Continuation trees for backward and forward stepping 2008 JavaOneSM Conference | java.sun.com/javaone | 53
  • 54. Agenda Java programming language != JVM != Java platform Terracotta RIFE Continuations Google Web Toolkit Google Android 2008 JavaOneSM Conference | java.sun.com/javaone | 54
  • 55. Agenda Java programming language != JVM != Java platform Terracotta RIFE Continuations Google Web Toolkit Google Android 2008 JavaOneSM Conference | java.sun.com/javaone | 55
  • 56. What is Google Web Toolkit? Create AJAX applications in the Java programming language using regular Java tools and deploy them to browser- compliant HTML and Javascript™ technology 2008 JavaOneSM Conference | java.sun.com/javaone | 56
  • 57. Google Web Toolkit Overview 2008 JavaOneSM Conference | java.sun.com/javaone | 57
  • 58. Google Web Toolkit approach 'Regular' Ajax Dev Different approach • Write Javascript code and • Write Ajax applications in the DHTML Java platform • Learn all the intricacies • Compile Java code to Javascript code Difficult to test Client-side debuggers Javascript versions Toolkit (GWT) Google Web Browser differences use Java platform, standard APIs and your packaging Smart text editors Resource regular tools Ajax Libraries Design RPC API and format 2008 JavaOneSM Conference | java.sun.com/javaone | 58
  • 59. GWT’s main features Two main execution modes • Hosted mode • Executed with the JVM, no generated Javascript source code • Embedded browser hooks into Java libraries • Code-test-debug as regular Java applications • Web mode • Compiles Java source code to Javascript source code • Runs inside browser without plugins Standardized RPC • Implement RemoteService interface • Relies on serialization for arguments and return values • Supports asynchronous method calls 2008 JavaOneSM Conference | java.sun.com/javaone | 59
  • 60. GWT Examples (with Eclipse) 2008 JavaOneSM Conference | java.sun.com/javaone | 60
  • 61. Hello World 2008 JavaOneSM Conference | java.sun.com/javaone | 61
  • 62. GWT Hello World Create a new project and generate the required files Import project into Eclipse 2008 JavaOneSM Conference | java.sun.com/javaone | 62
  • 63. Hello World - com/client/HelloWorldApp.java 2008 JavaOneSM Conference | java.sun.com/javaone | 63
  • 64. Hello World - com/public/HelloWorldApp.html 2008 JavaOneSM Conference | java.sun.com/javaone | 64
  • 65. Demo GWT Hello World 2008 JavaOneSM Conference | java.sun.com/javaone | 65
  • 66. RPC 2008 JavaOneSM Conference | java.sun.com/javaone | 66
  • 67. RPC Services com/client/GreeterService.java com/services/GreeterServiceImpl.java com/client/GreeterServiceAsync.java 2008 JavaOneSM Conference | java.sun.com/javaone | 67
  • 68. RPC GWT Module - com/RpcApp.gwt.xml 2008 JavaOneSM Conference | java.sun.com/javaone | 68
  • 69. RPC App - com/client/RpcApp.java 1/2 2008 JavaOneSM Conference | java.sun.com/javaone | 69
  • 70. RPC App - com/client/RpcApp.java 2/2 2008 JavaOneSM Conference | java.sun.com/javaone | 70
  • 71. Demo GWT RPC 2008 JavaOneSM Conference | java.sun.com/javaone | 71
  • 72. GWT’s Boldness 2008 JavaOneSM Conference | java.sun.com/javaone | 72
  • 73. GWT’s Boldness Two execution modes simplify both development and deployment Browser is hooked into Java libraries to provide real debugging during hosted mode The Java source code is compiled to the Javascript source code during web mode to hide the difficulties of Ajax/DHTML development 2008 JavaOneSM Conference | java.sun.com/javaone | 73
  • 74. Agenda Java programming language != JVM != Java platform Terracotta RIFE Continuations Google Web Toolkit Google Android 2008 JavaOneSM Conference | java.sun.com/javaone | 74
  • 75. Agenda Java programming language != JVM != Java platform Terracotta RIFE Continuations Google Web Toolkit Google Android 2008 JavaOneSM Conference | java.sun.com/javaone | 75
  • 76. What is Google Android? A platform for mobile devices where software is written in the Java language and run on Dalvik, a custom virtual machine for embedded use 2008 JavaOneSM Conference | java.sun.com/javaone | 76
  • 77. Google Android Overview 2008 JavaOneSM Conference | java.sun.com/javaone | 77
  • 78. Google Android approach 'Regular' Mobile Dev Different approach • Proprietary platform • Open-source platform • Java™ Platform, Micro Edition • All applications in Java (Java ME) is just another programming language application • Dedicated virtual machine • Java applications run in the per application same virtual machine 2008 JavaOneSM Conference | java.sun.com/javaone | 78
  • 79. Google Android Architecture 2008 JavaOneSM Conference | java.sun.com/javaone | 79
  • 80. Demo Google Android Too many snippets and resources to show code in slides 2008 JavaOneSM Conference | java.sun.com/javaone | 80
  • 81. Google Android’s Boldness 2008 JavaOneSM Conference | java.sun.com/javaone | 81
  • 82. Google Android’s Boldness Program everything in the Java programming language Only use Android's Java Platform Runtime Environment (JRE), which includes supported library classes Compile with javac and convert to Android bytecode for the Dalvik VM (.dex files) Debug through the Dalvik Debug Monitor Server (DDMS) which forwards ports from the emulator or device to the IDE 2008 JavaOneSM Conference | java.sun.com/javaone | 82
  • 83. Agenda Java programming language != JVM != Java platform Terracotta RIFE Continuations Google Web Toolkit Google Android 2008 JavaOneSM Conference | java.sun.com/javaone | 83
  • 84. Conclusion Using just the Java language you're able to do: • Transparent Clustering and Coordination: Terracotta (http://www.terracotta.org) • Intuitive application control flow: RIFE Continuations (http://rifers.org) • Ajax client application development: Google Web Toolkit (http://code.google.com/webtoolkit) • First-class mobile application development: Google Android (http://code.google.com/android) Without learning new languages and tools, all these possibilities open up 2008 JavaOneSM Conference | java.sun.com/javaone | 84
  • 85. Boldly go where the Java programming language has never gone before Geert Bevin http://terracotta.org - http://rifers.org