SlideShare a Scribd company logo
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

ODP
Jalimo Slides Linuxtag2007 (English)
PPTX
The power of dots
PPTX
BP207 - Meet the Java Application Server You Already Own – IBM Domino
PDF
TOMOYO Linux on Android
PDF
Flex Continuous Quality Builds Flex & (Ant || Maven)
PDF
Put your Java apps to sleep? Find out how - John Matthew Holt (Waratek)
PDF
Java8 launch at AMIS Services / First8
PPTX
Java 8 Launch Event - Past, Present and Future of Java and Java 8 key themes
Jalimo Slides Linuxtag2007 (English)
The power of dots
BP207 - Meet the Java Application Server You Already Own – IBM Domino
TOMOYO Linux on Android
Flex Continuous Quality Builds Flex & (Ant || Maven)
Put your Java apps to sleep? Find out how - John Matthew Holt (Waratek)
Java8 launch at AMIS Services / First8
Java 8 Launch Event - Past, Present and Future of Java and Java 8 key themes

What's hot (19)

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

Viewers also liked (8)

PDF
Beyond Java: Go for Java developers
PDF
A Recovering Java Developer Learns to Go
PDF
Golang server design pattern
PPTX
Golang for OO Programmers
PDF
Practical Look at Erlang
PPTX
Golang basics for Java developers - Part 1
ODP
HTTP/2 and Java: Current Status
PDF
HTTP/2 Comes to Java
Beyond Java: Go for Java developers
A Recovering Java Developer Learns to Go
Golang server design pattern
Golang for OO Programmers
Practical Look at Erlang
Golang basics for Java developers - Part 1
HTTP/2 and Java: Current Status
HTTP/2 Comes to Java
Ad

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

POTX
Splunking the JVM (Java Virtual Machine)
PDF
The State of Java under Oracle at JCertif 2011
PDF
Java: Rumours of my demise are greatly exaggerated
PDF
Gustavo Garnica: Evolución de la Plataforma Java y lo que Significa para Ti
PDF
blueMarine Or Why You Should Really Ship Swing Applications
PDF
Retour JavaOne 2009
PPTX
Java Programming (M&M)
PPTX
Java 101
PPTX
Introduction to java by priti sajja
PPTX
A tour of Java and the JVM
ODP
Open Source And Java
PPT
Great Cup od Java
PPTX
Java8 launch AMIS Services by Lucas Jellema
PDF
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
PDF
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
PDF
Java course in Chandigarh.pdf
PDF
JavaOne 2010 Keynote
PDF
All the Java ADF beginners need to know - part1
PDF
Virtual dev-day-java7-keynote-1641807
PPTX
MWLUG - Universal Java
Splunking the JVM (Java Virtual Machine)
The State of Java under Oracle at JCertif 2011
Java: Rumours of my demise are greatly exaggerated
Gustavo Garnica: Evolución de la Plataforma Java y lo que Significa para Ti
blueMarine Or Why You Should Really Ship Swing Applications
Retour JavaOne 2009
Java Programming (M&M)
Java 101
Introduction to java by priti sajja
A tour of Java and the JVM
Open Source And Java
Great Cup od Java
Java8 launch AMIS Services by Lucas Jellema
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
Java course in Chandigarh.pdf
JavaOne 2010 Keynote
All the Java ADF beginners need to know - part1
Virtual dev-day-java7-keynote-1641807
MWLUG - Universal Java

More from elliando dias (20)

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

Recently uploaded (20)

PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
Big Data Technologies - Introduction.pptx
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PPT
Teaching material agriculture food technology
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
Cloud computing and distributed systems.
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Big Data Technologies - Introduction.pptx
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Teaching material agriculture food technology
NewMind AI Weekly Chronicles - August'25 Week I
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
20250228 LYD VKU AI Blended-Learning.pptx
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
MYSQL Presentation for SQL database connectivity
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
MIND Revenue Release Quarter 2 2025 Press Release
Unlocking AI with Model Context Protocol (MCP)
Programs and apps: productivity, graphics, security and other tools
Spectral efficient network and resource selection model in 5G networks
Chapter 3 Spatial Domain Image Processing.pdf
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Cloud computing and distributed systems.
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Building Integrated photovoltaic BIPV_UPV.pdf

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