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
Ad

More Related Content

What's hot (19)

Project Zero For Javapolis 2007
Project Zero For Javapolis 2007Project Zero For Javapolis 2007
Project Zero For Javapolis 2007
Jason 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 got
Baruch 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.
 
History of Java 1/2
History of Java 1/2History of Java 1/2
History of Java 1/2
Eberhard Wolff
 
Advanced Effects Oscon 2007
Advanced Effects   Oscon 2007Advanced Effects   Oscon 2007
Advanced Effects Oscon 2007
Kirill Grouchnikov
 
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 eSDK
Marco Cavallini
 
Java basics.....
Java basics.....Java basics.....
Java basics.....
JYOTI RANJAN PAL
 
Autobuilder2 Yocto Project Summit Lyon 2019
Autobuilder2 Yocto Project Summit Lyon 2019Autobuilder2 Yocto Project Summit Lyon 2019
Autobuilder2 Yocto Project Summit Lyon 2019
Marco 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 2011
Arun 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 Fact
Luciano Resende
 
Ausoug glassfish perth
Ausoug glassfish perthAusoug glassfish perth
Ausoug glassfish perth
LansenConsulting
 
Introduction to Java
Introduction to Java Introduction to Java
Introduction to Java
Hitesh-Java
 
Java Presentation
Java PresentationJava Presentation
Java Presentation
Amr Salah
 
GlassFish in Production Environments
GlassFish in Production EnvironmentsGlassFish in Production Environments
GlassFish in Production Environments
Bruno Borges
 
Java
JavaJava
Java
kavirishi
 
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 Hacking
Stephen Chin
 
Project Zero For Javapolis 2007
Project Zero For Javapolis 2007Project Zero For Javapolis 2007
Project Zero For Javapolis 2007
Jason 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 got
Baruch 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 eSDK
Marco Cavallini
 
Autobuilder2 Yocto Project Summit Lyon 2019
Autobuilder2 Yocto Project Summit Lyon 2019Autobuilder2 Yocto Project Summit Lyon 2019
Autobuilder2 Yocto Project Summit Lyon 2019
Marco 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 2011
Arun 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 Fact
Luciano Resende
 
Introduction to Java
Introduction to Java Introduction to Java
Introduction to Java
Hitesh-Java
 
Java Presentation
Java PresentationJava Presentation
Java Presentation
Amr Salah
 
GlassFish in Production Environments
GlassFish in Production EnvironmentsGlassFish in Production Environments
GlassFish in Production Environments
Bruno 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 Hacking
Stephen Chin
 

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
Netcetera
 
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
Matt Stine
 
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
khalid Nowaf Almutiri
 
Practical Look at Erlang
Practical Look at ErlangPractical Look at Erlang
Practical Look at Erlang
Hamidreza Soleimani
 
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
Robert Stern
 
HTTP/2 and Java: Current Status
HTTP/2 and Java: Current StatusHTTP/2 and Java: Current Status
HTTP/2 and Java: Current Status
Simone Bordet
 
HTTP/2 Comes to Java
HTTP/2 Comes to JavaHTTP/2 Comes to Java
HTTP/2 Comes to Java
David Delabassee
 
Beyond Java: Go for Java developers
Beyond Java: Go for Java developersBeyond Java: Go for Java developers
Beyond Java: Go for Java developers
Netcetera
 
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
Matt 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 1
Robert Stern
 
HTTP/2 and Java: Current Status
HTTP/2 and Java: Current StatusHTTP/2 and Java: Current Status
HTTP/2 and Java: Current Status
Simone Bordet
 
Ad

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
elliando 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 Language
elliando 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 Machine
elliando dias
 
Java Cloud and Container Ready
Java Cloud and Container ReadyJava Cloud and Container Ready
Java Cloud and Container Ready
CodeOps Technologies LLP
 
It pro dev_birbilis_20101127_en
It pro dev_birbilis_20101127_enIt pro dev_birbilis_20101127_en
It pro dev_birbilis_20101127_en
George Birbilis
 
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...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
JavaOne 2008: Designing GUIs 101
JavaOne 2008: Designing GUIs 101JavaOne 2008: Designing GUIs 101
JavaOne 2008: Designing GUIs 101
Jeff Hoffman
 
Polygot Java EE on the GraalVM
Polygot Java EE on the GraalVMPolygot Java EE on the GraalVM
Polygot Java EE on the GraalVM
Ryan Cuprak
 
javalightspeed-jakartatech-2023.pdf
javalightspeed-jakartatech-2023.pdfjavalightspeed-jakartatech-2023.pdf
javalightspeed-jakartatech-2023.pdf
RichHagarty
 
Chapter 1. java programming language overview
Chapter 1. java programming language overviewChapter 1. java programming language overview
Chapter 1. java programming language overview
Jong Soon Bok
 
Core Java
Core JavaCore Java
Core Java
Prakash Dimmita
 
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 Quarkus
Uni 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 MINA
trustinlee
 
The Evolution of Java
The Evolution of JavaThe Evolution of Java
The Evolution of Java
Fu Cheng
 
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
Getting value from IoT, Integration and Data Analytics
 
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 Generated
javaease
 
[Challenge:Future] Chocoholic
[Challenge:Future] Chocoholic [Challenge:Future] Chocoholic
[Challenge:Future] Chocoholic
Challenge:Future
 
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
elliando 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 Language
elliando 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 Machine
elliando dias
 
It pro dev_birbilis_20101127_en
It pro dev_birbilis_20101127_enIt pro dev_birbilis_20101127_en
It pro dev_birbilis_20101127_en
George Birbilis
 
JavaOne 2008: Designing GUIs 101
JavaOne 2008: Designing GUIs 101JavaOne 2008: Designing GUIs 101
JavaOne 2008: Designing GUIs 101
Jeff Hoffman
 
Polygot Java EE on the GraalVM
Polygot Java EE on the GraalVMPolygot Java EE on the GraalVM
Polygot Java EE on the GraalVM
Ryan Cuprak
 
javalightspeed-jakartatech-2023.pdf
javalightspeed-jakartatech-2023.pdfjavalightspeed-jakartatech-2023.pdf
javalightspeed-jakartatech-2023.pdf
RichHagarty
 
Chapter 1. java programming language overview
Chapter 1. java programming language overviewChapter 1. java programming language overview
Chapter 1. java programming language overview
Jong 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 Quarkus
Uni 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 MINA
trustinlee
 
The Evolution of Java
The Evolution of JavaThe Evolution of Java
The Evolution of Java
Fu 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 Generated
javaease
 
[Challenge:Future] Chocoholic
[Challenge:Future] Chocoholic [Challenge:Future] Chocoholic
[Challenge:Future] Chocoholic
Challenge:Future
 
Ad

More from elliando dias (20)

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
elliando 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 ClojureScript
elliando dias
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structures
elliando dias
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de container
elliando dias
 
Geometria Projetiva
Geometria ProjetivaGeometria Projetiva
Geometria Projetiva
elliando 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 Agility
elliando dias
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
elliando 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
 
Ragel talk
Ragel talkRagel talk
Ragel talk
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 Web
elliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
elliando dias
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
elliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
elliando dias
 
Rango
RangoRango
Rango
elliando 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 Design
elliando dias
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
elliando dias
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
elliando 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 Facebook
elliando 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 Study
elliando dias
 
Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
elliando 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 ClojureScript
elliando dias
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structures
elliando dias
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de container
elliando 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 Agility
elliando dias
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
elliando 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 Web
elliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
elliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
elliando 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 Design
elliando dias
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
elliando 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 Facebook
elliando 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 Study
elliando dias
 

Recently uploaded (20)

#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
Web and Graphics Designing Training in Rajpura
Web and Graphics Designing Training in RajpuraWeb and Graphics Designing Training in Rajpura
Web and Graphics Designing Training in Rajpura
Erginous Technology
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
Are Cloud PBX Providers in India Reliable for Small Businesses (1).pdf
Are Cloud PBX Providers in India Reliable for Small Businesses (1).pdfAre Cloud PBX Providers in India Reliable for Small Businesses (1).pdf
Are Cloud PBX Providers in India Reliable for Small Businesses (1).pdf
Telecoms Supermarket
 
Top 10 IT Help Desk Outsourcing Services
Top 10 IT Help Desk Outsourcing ServicesTop 10 IT Help Desk Outsourcing Services
Top 10 IT Help Desk Outsourcing Services
Infrassist Technologies Pvt. Ltd.
 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 
Mastering Advance Window Functions in SQL.pdf
Mastering Advance Window Functions in SQL.pdfMastering Advance Window Functions in SQL.pdf
Mastering Advance Window Functions in SQL.pdf
Spiral Mantra
 
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveDesigning Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
ScyllaDB
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
Web and Graphics Designing Training in Rajpura
Web and Graphics Designing Training in RajpuraWeb and Graphics Designing Training in Rajpura
Web and Graphics Designing Training in Rajpura
Erginous Technology
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
Are Cloud PBX Providers in India Reliable for Small Businesses (1).pdf
Are Cloud PBX Providers in India Reliable for Small Businesses (1).pdfAre Cloud PBX Providers in India Reliable for Small Businesses (1).pdf
Are Cloud PBX Providers in India Reliable for Small Businesses (1).pdf
Telecoms Supermarket
 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 
Mastering Advance Window Functions in SQL.pdf
Mastering Advance Window Functions in SQL.pdfMastering Advance Window Functions in SQL.pdf
Mastering Advance Window Functions in SQL.pdf
Spiral Mantra
 
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveDesigning Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
ScyllaDB
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 

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