SlideShare ist ein Scribd-Unternehmen logo
1 von 19
Evolution of the Java Client
Nandini Ramani
Community Leader OpenJFX
Co-Chair W3C SVG WG
Sun Microsystems., Inc.
Rich Integrated Internet Clients

          Terminal    Client/Server      Web       Rich Internet          Integrated
         Applications Applications    Applications Applications          Rich Clients
                                                               Local Services & Data
                                                               Richness / Interactivity
Client                                                         Client Integration
                                                               Client / Browser Applicability




                                                         Web as a Platform


Server                                              Complexity Management
                                                    Security / Reliability
                                                    Management
                                                    Consolidation



                                                                                    TIME


                                                                                                2
In 2010 ...
• 3G Advanced Phone Devices surpass PCs as the dominant
  connection to the Internet (Forrester 2006)
• Global Media and Entertainment Market reaches
  $1.83 Trillion driven by online / digital revolution (PWC 2006)
• China will be the largest market for PCs (Forrester 2005)
• Digital Music Sales account for 40% of
  Recording Industry (iSuppli 2006)
• 12% of the global handset population will be TV
  capable with over 100 Million new Subscribers (iSuppli 2006)
• Content comes from ISVs and SPs, not operators' portals
• Nearly all applications “phone home” for updates
                                                                    3
We've Done it Before...




                JavaFX


     ...And We're Doing it Again
                                   4
Designing for Content Authoring
The Big Picture

              Home          JavaFX
 Devices                               Desktop




                                                               Content Authoring Tools
           Entertainment     Mobile




                                                                    JavaFX Script
                                                 Interactive
                                                  Content

                                                   JavaFX
                                                 Framework
                                      2D/3D
                           AGUI
           PBP
SVG/MSA

CLDC       CDC             CDC        SE
                                                                                     5
Before JavaFX
• Why does it take a long time to write GUI
  programs?
• How can we avoid the “Ugly Java technology GUI”
  stereotype?
• And how can I avoid having an enormous mass of
  listener patterns?
• Gridbag anyone ?



                                                    6
What problem does it solve?
• How can we make GUI development more
  efficient ?
• GUI development is a collaboration between
  content designers, graphic artists, and programmers
• The main bottleneck in this process appears to be
  us—the programmers—and not the content
  designers or graphic artists
• But what exactly is making us inefficient?


                                                        7
The “Ugly” Java GUI

• Part of the problem is Swing
  > AWT/Swing container/component hierarchy is a tree of rectangular
     (mostly gray) boxes
  > If all you do is compose Swing components together
       – the result is typically the Ugly Java technology GUI
  > Same problem exists with other toolkits, e.g., GTK, VB
• UI Designers and Swing programmers are using different building
  blocks
  > UI Designers compose designs in tools like Photoshop and
     Illustrator
  > The building blocks they use have direct analogs in Java 2D API,
     but not necessarily in Swing
                                                                       8
Java2D++

• To match the designs of UI designers requires using Java 2D API
• But Java 2D API doesn't have compositional behavior
   > The barrier to entry for many Java code programmers is too high
      (i.e., other than Romain Guy)
• In addition to Swing Components, JavaFX includes SVG-like
  interfaces to Java 2D API as first-class elements which can be
  composed together into higher-level components.
   > JavaFX allows declarative expression of this composition




                                                                       9
JavaFX Script
Programming Language for the Java platform
  > Object-oriented
  > Declarative Syntax
  > Statically-typed + type-inference
  > Automatic data binding
  > Extensive Widget library encompassing Swing
  > and Java 2D™ API
  > Development tools including NetBeans™ and
    Eclipse IDE plugins


                                                  10
JavaFX Script
• Procedural update language with Java-like control
  structures and the update syntax (insert/delete) from
  XQuery
• For UI designers convenience:
  > Cryptic Java operators (!=, !, &&, ||, ?:) were replaced
    with more well-known equivalents (<>, not, and, or,
    if/then/else)
  > Balance between having type declarations for readability
    and having the option of omitting them without hurting
    ability to understand the code


                                                               11
JavaFX Script – A Simple Comparison
In JavaFX Script                                    In Java
                                                      Main guitar class 
   picks.opacity = [0, .01 .. 1 ] dur 1000 linear
                                                             guitarAnimationThread = new StringOpThread();
                                                             ......
                                                             ......
                                                             if (guitarAnimationThread != null) {
                                                                guitarAnimationThread.run();
                                                             }
In Java                                                      .........

(SwingLabs Timing Framework)                          StringOpThread class
                                                             ...........
                                                          public void run() {
                                                                 opacityBegin = 0.01;
 public void class Guitar {
                                                             opacityEnd = 1.0;
     private GuitarPick pick = ...;
                                                                 opacityIncreStep = 0.02;
     public Guitar() {                                           opacitySleep = 2;
         pick.setOpacity(.5f);
         Animator a =                                         for(currOpacity = opacityBegin; 
           PropertySetter.createAnimator(                           currOpacity < opacityEnd;   
                                                                      currOpacity+=opacityIncreStep) {
             300, pick, quot;opacityquot;, .5f, 1.0f);
                                                                setPickOpacity();
         MouseTrigger.addTrigger(pick, a,
                                                                repaint();
             MouseTriggerEvent.ENTER, true);
                                                                try {
     }                                                            thread.sleep(opacitySleep);
 }                                                              } catch (InterruptedException e) { }


                                                                                                             12
Data Binding in JavaFX
• Cause and Effect—Responding to change
• The JavaFX bind operator—Allows dynamic
  content to be expressed declaratively
• Dependency-based evaluation of any
  expression
• Automated by the system—Rather than
  manually wired by the programmer
• You just declare dependencies and the
  JavaFX runtime takes care of performing
  updates when things change
• Eliminates listener patterns
                                            13
Benefits of static-typing

• High-quality, compile-time error reporting
• High-quality IDE support
  > Code-completion
  > Searching
  > Refactoring
• Efficient compilation



                                               14
Consumer JRE
• Quickstarter: Radically reduce the startup time for Java applications
  and applets.
• Java Kernel: Reduce the time-to-install-and-launch when the user
  needs to install the JRE in order to run an application.
• Deployment Toolkit: Enable easy detection and installation of the
  JRE.
• Installer Improvements: Improve the user experience of installation.
• Windows Graphics Performance: Enable default graphics
  acceleration for simple and advanced 2D rendering.
• Nimbus Look & Feel : Release a new cross-platform look & feel
  based on Synth.
• http://weblogs.java.net/blog/chet/archive/2007/05/consumer_jre_le.html

                                                                           15
Java Plug-In
• Today
 > Robust mechanism to support Java content in the browser
 > Java <-> JavaScript Communication on all browsers
 > Access to the DOM
    – http://iris.dev.java.net/ : AJAX-like web app built with Java
 > Easy to deploy 3D content as Applets
    – JNLPAppletLauncher: http://applet-launcher.dev.java.net
• Tomorrow
 > Will enable deployment of more sophisticated Applets
 > Control over heap size and low-level JVM command line
   arguments
 > Unification between Java Web Start and Java Plug-In
    – Using JNLP as standard deployment mechanism
                                                                      16
Summary
    JavaFX is a family of products and technologies
•
    JavaFX Compiler development on openjfx.org
•
    JavaFX Script simplifies GUI programming
•
    More coming, watch this space
•
        Ease of deployment
    >
        Consumer, modular JRE
    >
        JavaFX Mobile
    >
        JavaFX Tools
    >



                                                      17
Further Information

 http://openjfx.org
 http://www.sun.com/javafx
 http://blogs.sun.com/chrisoliver
 http://blogs.sun.com/brewin
 http://iris.dev.java.net
 http://weblogs.java.net/blog/chet
 http://jfx.wikia.com

                                     18
JavaFX
Nandini.Ramani@sun.com

Weitere ähnliche Inhalte

Was ist angesagt?

Jruby synergy-of-ruby-and-java
Jruby synergy-of-ruby-and-javaJruby synergy-of-ruby-and-java
Jruby synergy-of-ruby-and-javaKeith Bennett
 
Performance Improvements in Browsers
Performance Improvements in BrowsersPerformance Improvements in Browsers
Performance Improvements in Browsersjeresig
 
Connect2017 DEV-1550 Why Java 8? Or, What's a Lambda?
Connect2017 DEV-1550 Why Java 8? Or, What's a Lambda?Connect2017 DEV-1550 Why Java 8? Or, What's a Lambda?
Connect2017 DEV-1550 Why Java 8? Or, What's a Lambda?Julian Robichaux
 
DNUG Webcast: IBM Notes V10 Performance Boost
DNUG Webcast: IBM Notes V10 Performance BoostDNUG Webcast: IBM Notes V10 Performance Boost
DNUG Webcast: IBM Notes V10 Performance BoostChristoph Adler
 
PipelineAI Optimizes Your Enterprise AI Pipeline from Distributed Training to...
PipelineAI Optimizes Your Enterprise AI Pipeline from Distributed Training to...PipelineAI Optimizes Your Enterprise AI Pipeline from Distributed Training to...
PipelineAI Optimizes Your Enterprise AI Pipeline from Distributed Training to...Chris Fregly
 
From Ant to Maven to Gradle a tale of CI tools for JVM
From Ant to Maven to Gradle a tale of CI tools for JVMFrom Ant to Maven to Gradle a tale of CI tools for JVM
From Ant to Maven to Gradle a tale of CI tools for JVMBucharest Java User Group
 
High Performance TensorFlow in Production -- Sydney ML / AI Train Workshop @ ...
High Performance TensorFlow in Production -- Sydney ML / AI Train Workshop @ ...High Performance TensorFlow in Production -- Sydney ML / AI Train Workshop @ ...
High Performance TensorFlow in Production -- Sydney ML / AI Train Workshop @ ...Chris Fregly
 
PipelineAI + TensorFlow AI + Spark ML + Kuberenetes + Istio + AWS SageMaker +...
PipelineAI + TensorFlow AI + Spark ML + Kuberenetes + Istio + AWS SageMaker +...PipelineAI + TensorFlow AI + Spark ML + Kuberenetes + Istio + AWS SageMaker +...
PipelineAI + TensorFlow AI + Spark ML + Kuberenetes + Istio + AWS SageMaker +...Chris Fregly
 
Optimizing, Profiling, and Deploying TensorFlow AI Models with GPUs - San Fra...
Optimizing, Profiling, and Deploying TensorFlow AI Models with GPUs - San Fra...Optimizing, Profiling, and Deploying TensorFlow AI Models with GPUs - San Fra...
Optimizing, Profiling, and Deploying TensorFlow AI Models with GPUs - San Fra...Chris Fregly
 
Java ppts unit1
Java ppts unit1Java ppts unit1
Java ppts unit1Priya11Tcs
 
Performance tips for Symfony2 & PHP
Performance tips for Symfony2 & PHPPerformance tips for Symfony2 & PHP
Performance tips for Symfony2 & PHPMax Romanovsky
 
Play Framework: The Basics
Play Framework: The BasicsPlay Framework: The Basics
Play Framework: The BasicsPhilip Langer
 
Zendcon magento101
Zendcon magento101Zendcon magento101
Zendcon magento101Mathew Beane
 
Introduction to Play Framework
Introduction to Play FrameworkIntroduction to Play Framework
Introduction to Play FrameworkWarren Zhou
 
Capistrano deploy Magento project in an efficient way
Capistrano deploy Magento project in an efficient wayCapistrano deploy Magento project in an efficient way
Capistrano deploy Magento project in an efficient waySylvain Rayé
 

Was ist angesagt? (20)

Jruby synergy-of-ruby-and-java
Jruby synergy-of-ruby-and-javaJruby synergy-of-ruby-and-java
Jruby synergy-of-ruby-and-java
 
Performance Improvements in Browsers
Performance Improvements in BrowsersPerformance Improvements in Browsers
Performance Improvements in Browsers
 
Connect2017 DEV-1550 Why Java 8? Or, What's a Lambda?
Connect2017 DEV-1550 Why Java 8? Or, What's a Lambda?Connect2017 DEV-1550 Why Java 8? Or, What's a Lambda?
Connect2017 DEV-1550 Why Java 8? Or, What's a Lambda?
 
Fastlane - ATC 2016
Fastlane - ATC 2016Fastlane - ATC 2016
Fastlane - ATC 2016
 
DNUG Webcast: IBM Notes V10 Performance Boost
DNUG Webcast: IBM Notes V10 Performance BoostDNUG Webcast: IBM Notes V10 Performance Boost
DNUG Webcast: IBM Notes V10 Performance Boost
 
PipelineAI Optimizes Your Enterprise AI Pipeline from Distributed Training to...
PipelineAI Optimizes Your Enterprise AI Pipeline from Distributed Training to...PipelineAI Optimizes Your Enterprise AI Pipeline from Distributed Training to...
PipelineAI Optimizes Your Enterprise AI Pipeline from Distributed Training to...
 
From Ant to Maven to Gradle a tale of CI tools for JVM
From Ant to Maven to Gradle a tale of CI tools for JVMFrom Ant to Maven to Gradle a tale of CI tools for JVM
From Ant to Maven to Gradle a tale of CI tools for JVM
 
High Performance TensorFlow in Production -- Sydney ML / AI Train Workshop @ ...
High Performance TensorFlow in Production -- Sydney ML / AI Train Workshop @ ...High Performance TensorFlow in Production -- Sydney ML / AI Train Workshop @ ...
High Performance TensorFlow in Production -- Sydney ML / AI Train Workshop @ ...
 
PipelineAI + TensorFlow AI + Spark ML + Kuberenetes + Istio + AWS SageMaker +...
PipelineAI + TensorFlow AI + Spark ML + Kuberenetes + Istio + AWS SageMaker +...PipelineAI + TensorFlow AI + Spark ML + Kuberenetes + Istio + AWS SageMaker +...
PipelineAI + TensorFlow AI + Spark ML + Kuberenetes + Istio + AWS SageMaker +...
 
Optimizing, Profiling, and Deploying TensorFlow AI Models with GPUs - San Fra...
Optimizing, Profiling, and Deploying TensorFlow AI Models with GPUs - San Fra...Optimizing, Profiling, and Deploying TensorFlow AI Models with GPUs - San Fra...
Optimizing, Profiling, and Deploying TensorFlow AI Models with GPUs - San Fra...
 
Swoole Love PHP
Swoole Love PHPSwoole Love PHP
Swoole Love PHP
 
Java ppts unit1
Java ppts unit1Java ppts unit1
Java ppts unit1
 
Performance tips for Symfony2 & PHP
Performance tips for Symfony2 & PHPPerformance tips for Symfony2 & PHP
Performance tips for Symfony2 & PHP
 
Introduction to java programming part 1
Introduction to java programming   part 1Introduction to java programming   part 1
Introduction to java programming part 1
 
Play Framework: The Basics
Play Framework: The BasicsPlay Framework: The Basics
Play Framework: The Basics
 
Zendcon magento101
Zendcon magento101Zendcon magento101
Zendcon magento101
 
Apache Maven In 10 Slides
Apache Maven In 10 SlidesApache Maven In 10 Slides
Apache Maven In 10 Slides
 
Maven tutorial
Maven tutorialMaven tutorial
Maven tutorial
 
Introduction to Play Framework
Introduction to Play FrameworkIntroduction to Play Framework
Introduction to Play Framework
 
Capistrano deploy Magento project in an efficient way
Capistrano deploy Magento project in an efficient wayCapistrano deploy Magento project in an efficient way
Capistrano deploy Magento project in an efficient way
 

Ähnlich wie Os Ramani

Java Fx Ajaxworld Rags V1
Java Fx Ajaxworld Rags V1Java Fx Ajaxworld Rags V1
Java Fx Ajaxworld Rags V1rajivmordani
 
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13Fred Sauer
 
Scripting Oracle Develop 2007
Scripting Oracle Develop 2007Scripting Oracle Develop 2007
Scripting Oracle Develop 2007Tugdual Grall
 
Wicket Deliver Your Webapp On Time
Wicket Deliver Your Webapp On TimeWicket Deliver Your Webapp On Time
Wicket Deliver Your Webapp On TimeWill Hoover
 
Programming with JavaFX
Programming with JavaFXProgramming with JavaFX
Programming with JavaFXFulvio Corno
 
Samuel Asher Rivello - PureMVC Hands On Part 2
Samuel Asher Rivello - PureMVC Hands On Part 2Samuel Asher Rivello - PureMVC Hands On Part 2
Samuel Asher Rivello - PureMVC Hands On Part 2360|Conferences
 
IPhone Web Development With Grails from CodeMash 2009
IPhone Web Development With Grails from CodeMash 2009IPhone Web Development With Grails from CodeMash 2009
IPhone Web Development With Grails from CodeMash 2009Christopher Judd
 
JSUG - Filthy Flex by Christoph Pickl
JSUG - Filthy Flex by Christoph PicklJSUG - Filthy Flex by Christoph Pickl
JSUG - Filthy Flex by Christoph PicklChristoph Pickl
 
Micronaut: A new way to build microservices
Micronaut: A new way to build microservicesMicronaut: A new way to build microservices
Micronaut: A new way to build microservicesLuram Archanjo
 
Applications use in Java GUIThe Java GUI consists of a separate, .pdf
Applications use in Java GUIThe Java GUI consists of a separate, .pdfApplications use in Java GUIThe Java GUI consists of a separate, .pdf
Applications use in Java GUIThe Java GUI consists of a separate, .pdfakshay1213
 
Java vs. Java Script for enterprise web applications - Chris Bailey
Java vs. Java Script for enterprise web applications - Chris BaileyJava vs. Java Script for enterprise web applications - Chris Bailey
Java vs. Java Script for enterprise web applications - Chris BaileyJAXLondon_Conference
 
Core java over view basics introduction by quontra solutions
Core java over view basics introduction by quontra solutionsCore java over view basics introduction by quontra solutions
Core java over view basics introduction by quontra solutionsQUONTRASOLUTIONS
 
What's new in DWR version 3
What's new in DWR version 3What's new in DWR version 3
What's new in DWR version 3Joe Walker
 
Web polyglot programming
Web polyglot programmingWeb polyglot programming
Web polyglot programmingDmitry Buzdin
 
CommunityOneEast 09 - Dynamic Languages: the next big thing for the JVM or an...
CommunityOneEast 09 - Dynamic Languages: the next big thing for the JVM or an...CommunityOneEast 09 - Dynamic Languages: the next big thing for the JVM or an...
CommunityOneEast 09 - Dynamic Languages: the next big thing for the JVM or an...Chris Richardson
 

Ähnlich wie Os Ramani (20)

Java Fx Ajaxworld Rags V1
Java Fx Ajaxworld Rags V1Java Fx Ajaxworld Rags V1
Java Fx Ajaxworld Rags V1
 
GlassFish v3 Prelude Aquarium Paris
GlassFish v3 Prelude Aquarium ParisGlassFish v3 Prelude Aquarium Paris
GlassFish v3 Prelude Aquarium Paris
 
GlassFish v3 : En Route Java EE 6
GlassFish v3 : En Route Java EE 6GlassFish v3 : En Route Java EE 6
GlassFish v3 : En Route Java EE 6
 
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
 
Scripting Oracle Develop 2007
Scripting Oracle Develop 2007Scripting Oracle Develop 2007
Scripting Oracle Develop 2007
 
Wicket Deliver Your Webapp On Time
Wicket Deliver Your Webapp On TimeWicket Deliver Your Webapp On Time
Wicket Deliver Your Webapp On Time
 
Resthub lyonjug
Resthub lyonjugResthub lyonjug
Resthub lyonjug
 
Programming with JavaFX
Programming with JavaFXProgramming with JavaFX
Programming with JavaFX
 
Samuel Asher Rivello - PureMVC Hands On Part 2
Samuel Asher Rivello - PureMVC Hands On Part 2Samuel Asher Rivello - PureMVC Hands On Part 2
Samuel Asher Rivello - PureMVC Hands On Part 2
 
IPhone Web Development With Grails from CodeMash 2009
IPhone Web Development With Grails from CodeMash 2009IPhone Web Development With Grails from CodeMash 2009
IPhone Web Development With Grails from CodeMash 2009
 
JSUG - Filthy Flex by Christoph Pickl
JSUG - Filthy Flex by Christoph PicklJSUG - Filthy Flex by Christoph Pickl
JSUG - Filthy Flex by Christoph Pickl
 
Micronaut: A new way to build microservices
Micronaut: A new way to build microservicesMicronaut: A new way to build microservices
Micronaut: A new way to build microservices
 
Mlocjs buzdin
Mlocjs buzdinMlocjs buzdin
Mlocjs buzdin
 
Applications use in Java GUIThe Java GUI consists of a separate, .pdf
Applications use in Java GUIThe Java GUI consists of a separate, .pdfApplications use in Java GUIThe Java GUI consists of a separate, .pdf
Applications use in Java GUIThe Java GUI consists of a separate, .pdf
 
Java vs. Java Script for enterprise web applications - Chris Bailey
Java vs. Java Script for enterprise web applications - Chris BaileyJava vs. Java Script for enterprise web applications - Chris Bailey
Java vs. Java Script for enterprise web applications - Chris Bailey
 
Core java over view basics introduction by quontra solutions
Core java over view basics introduction by quontra solutionsCore java over view basics introduction by quontra solutions
Core java over view basics introduction by quontra solutions
 
What's new in DWR version 3
What's new in DWR version 3What's new in DWR version 3
What's new in DWR version 3
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Web polyglot programming
Web polyglot programmingWeb polyglot programming
Web polyglot programming
 
CommunityOneEast 09 - Dynamic Languages: the next big thing for the JVM or an...
CommunityOneEast 09 - Dynamic Languages: the next big thing for the JVM or an...CommunityOneEast 09 - Dynamic Languages: the next big thing for the JVM or an...
CommunityOneEast 09 - Dynamic Languages: the next big thing for the JVM or an...
 

Mehr von oscon2007

J Ruby Whirlwind Tour
J Ruby Whirlwind TourJ Ruby Whirlwind Tour
J Ruby Whirlwind Touroscon2007
 
Solr Presentation5
Solr Presentation5Solr Presentation5
Solr Presentation5oscon2007
 
Os Fitzpatrick Sussman Wiifm
Os Fitzpatrick Sussman WiifmOs Fitzpatrick Sussman Wiifm
Os Fitzpatrick Sussman Wiifmoscon2007
 
Performance Whack A Mole
Performance Whack A MolePerformance Whack A Mole
Performance Whack A Moleoscon2007
 
Os Lanphier Brashears
Os Lanphier BrashearsOs Lanphier Brashears
Os Lanphier Brashearsoscon2007
 
Os Fitzpatrick Sussman Swp
Os Fitzpatrick Sussman SwpOs Fitzpatrick Sussman Swp
Os Fitzpatrick Sussman Swposcon2007
 
Os Berlin Dispelling Myths
Os Berlin Dispelling MythsOs Berlin Dispelling Myths
Os Berlin Dispelling Mythsoscon2007
 
Os Keysholistic
Os KeysholisticOs Keysholistic
Os Keysholisticoscon2007
 
Os Jonphillips
Os JonphillipsOs Jonphillips
Os Jonphillipsoscon2007
 
Os Urnerupdated
Os UrnerupdatedOs Urnerupdated
Os Urnerupdatedoscon2007
 

Mehr von oscon2007 (20)

J Ruby Whirlwind Tour
J Ruby Whirlwind TourJ Ruby Whirlwind Tour
J Ruby Whirlwind Tour
 
Solr Presentation5
Solr Presentation5Solr Presentation5
Solr Presentation5
 
Os Borger
Os BorgerOs Borger
Os Borger
 
Os Harkins
Os HarkinsOs Harkins
Os Harkins
 
Os Fitzpatrick Sussman Wiifm
Os Fitzpatrick Sussman WiifmOs Fitzpatrick Sussman Wiifm
Os Fitzpatrick Sussman Wiifm
 
Os Bunce
Os BunceOs Bunce
Os Bunce
 
Yuicss R7
Yuicss R7Yuicss R7
Yuicss R7
 
Performance Whack A Mole
Performance Whack A MolePerformance Whack A Mole
Performance Whack A Mole
 
Os Fogel
Os FogelOs Fogel
Os Fogel
 
Os Lanphier Brashears
Os Lanphier BrashearsOs Lanphier Brashears
Os Lanphier Brashears
 
Os Tucker
Os TuckerOs Tucker
Os Tucker
 
Os Fitzpatrick Sussman Swp
Os Fitzpatrick Sussman SwpOs Fitzpatrick Sussman Swp
Os Fitzpatrick Sussman Swp
 
Os Furlong
Os FurlongOs Furlong
Os Furlong
 
Os Berlin Dispelling Myths
Os Berlin Dispelling MythsOs Berlin Dispelling Myths
Os Berlin Dispelling Myths
 
Os Kimsal
Os KimsalOs Kimsal
Os Kimsal
 
Os Pruett
Os PruettOs Pruett
Os Pruett
 
Os Alrubaie
Os AlrubaieOs Alrubaie
Os Alrubaie
 
Os Keysholistic
Os KeysholisticOs Keysholistic
Os Keysholistic
 
Os Jonphillips
Os JonphillipsOs Jonphillips
Os Jonphillips
 
Os Urnerupdated
Os UrnerupdatedOs Urnerupdated
Os Urnerupdated
 

Kürzlich hochgeladen

Vector Search @ sw2con for slideshare.pptx
Vector Search @ sw2con for slideshare.pptxVector Search @ sw2con for slideshare.pptx
Vector Search @ sw2con for slideshare.pptxjbellis
 
2024 May Patch Tuesday
2024 May Patch Tuesday2024 May Patch Tuesday
2024 May Patch TuesdayIvanti
 
Simplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptxSimplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptxMarkSteadman7
 
The Ultimate Prompt Engineering Guide for Generative AI: Get the Most Out of ...
The Ultimate Prompt Engineering Guide for Generative AI: Get the Most Out of ...The Ultimate Prompt Engineering Guide for Generative AI: Get the Most Out of ...
The Ultimate Prompt Engineering Guide for Generative AI: Get the Most Out of ...SOFTTECHHUB
 
How to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cfHow to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cfdanishmna97
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
Cyber Insurance - RalphGilot - Embry-Riddle Aeronautical University.pptx
Cyber Insurance - RalphGilot - Embry-Riddle Aeronautical University.pptxCyber Insurance - RalphGilot - Embry-Riddle Aeronautical University.pptx
Cyber Insurance - RalphGilot - Embry-Riddle Aeronautical University.pptxMasterG
 
ADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptxADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptxFIDO Alliance
 
State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!Memoori
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard37
 
Event-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream ProcessingEvent-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream ProcessingScyllaDB
 
Portal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russePortal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russe中 央社
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightSafe Software
 
Microsoft BitLocker Bypass Attack Method.pdf
Microsoft BitLocker Bypass Attack Method.pdfMicrosoft BitLocker Bypass Attack Method.pdf
Microsoft BitLocker Bypass Attack Method.pdfOverkill Security
 
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....rightmanforbloodline
 
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsContinuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsLeah Henrickson
 
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...Skynet Technologies
 
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)Paige Cruz
 
UiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overviewUiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overviewDianaGray10
 
AI mind or machine power point presentation
AI mind or machine power point presentationAI mind or machine power point presentation
AI mind or machine power point presentationyogeshlabana357357
 

Kürzlich hochgeladen (20)

Vector Search @ sw2con for slideshare.pptx
Vector Search @ sw2con for slideshare.pptxVector Search @ sw2con for slideshare.pptx
Vector Search @ sw2con for slideshare.pptx
 
2024 May Patch Tuesday
2024 May Patch Tuesday2024 May Patch Tuesday
2024 May Patch Tuesday
 
Simplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptxSimplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptx
 
The Ultimate Prompt Engineering Guide for Generative AI: Get the Most Out of ...
The Ultimate Prompt Engineering Guide for Generative AI: Get the Most Out of ...The Ultimate Prompt Engineering Guide for Generative AI: Get the Most Out of ...
The Ultimate Prompt Engineering Guide for Generative AI: Get the Most Out of ...
 
How to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cfHow to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cf
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Cyber Insurance - RalphGilot - Embry-Riddle Aeronautical University.pptx
Cyber Insurance - RalphGilot - Embry-Riddle Aeronautical University.pptxCyber Insurance - RalphGilot - Embry-Riddle Aeronautical University.pptx
Cyber Insurance - RalphGilot - Embry-Riddle Aeronautical University.pptx
 
ADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptxADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptx
 
State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptx
 
Event-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream ProcessingEvent-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream Processing
 
Portal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russePortal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russe
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and Insight
 
Microsoft BitLocker Bypass Attack Method.pdf
Microsoft BitLocker Bypass Attack Method.pdfMicrosoft BitLocker Bypass Attack Method.pdf
Microsoft BitLocker Bypass Attack Method.pdf
 
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
 
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsContinuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
 
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
 
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
 
UiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overviewUiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overview
 
AI mind or machine power point presentation
AI mind or machine power point presentationAI mind or machine power point presentation
AI mind or machine power point presentation
 

Os Ramani

  • 1. Evolution of the Java Client Nandini Ramani Community Leader OpenJFX Co-Chair W3C SVG WG Sun Microsystems., Inc.
  • 2. Rich Integrated Internet Clients Terminal Client/Server Web Rich Internet Integrated Applications Applications Applications Applications Rich Clients Local Services & Data Richness / Interactivity Client Client Integration Client / Browser Applicability Web as a Platform Server Complexity Management Security / Reliability Management Consolidation TIME 2
  • 3. In 2010 ... • 3G Advanced Phone Devices surpass PCs as the dominant connection to the Internet (Forrester 2006) • Global Media and Entertainment Market reaches $1.83 Trillion driven by online / digital revolution (PWC 2006) • China will be the largest market for PCs (Forrester 2005) • Digital Music Sales account for 40% of Recording Industry (iSuppli 2006) • 12% of the global handset population will be TV capable with over 100 Million new Subscribers (iSuppli 2006) • Content comes from ISVs and SPs, not operators' portals • Nearly all applications “phone home” for updates 3
  • 4. We've Done it Before... JavaFX ...And We're Doing it Again 4
  • 5. Designing for Content Authoring The Big Picture Home JavaFX Devices Desktop Content Authoring Tools Entertainment Mobile JavaFX Script Interactive Content JavaFX Framework 2D/3D AGUI PBP SVG/MSA CLDC CDC CDC SE 5
  • 6. Before JavaFX • Why does it take a long time to write GUI programs? • How can we avoid the “Ugly Java technology GUI” stereotype? • And how can I avoid having an enormous mass of listener patterns? • Gridbag anyone ? 6
  • 7. What problem does it solve? • How can we make GUI development more efficient ? • GUI development is a collaboration between content designers, graphic artists, and programmers • The main bottleneck in this process appears to be us—the programmers—and not the content designers or graphic artists • But what exactly is making us inefficient? 7
  • 8. The “Ugly” Java GUI • Part of the problem is Swing > AWT/Swing container/component hierarchy is a tree of rectangular (mostly gray) boxes > If all you do is compose Swing components together – the result is typically the Ugly Java technology GUI > Same problem exists with other toolkits, e.g., GTK, VB • UI Designers and Swing programmers are using different building blocks > UI Designers compose designs in tools like Photoshop and Illustrator > The building blocks they use have direct analogs in Java 2D API, but not necessarily in Swing 8
  • 9. Java2D++ • To match the designs of UI designers requires using Java 2D API • But Java 2D API doesn't have compositional behavior > The barrier to entry for many Java code programmers is too high (i.e., other than Romain Guy) • In addition to Swing Components, JavaFX includes SVG-like interfaces to Java 2D API as first-class elements which can be composed together into higher-level components. > JavaFX allows declarative expression of this composition 9
  • 10. JavaFX Script Programming Language for the Java platform > Object-oriented > Declarative Syntax > Statically-typed + type-inference > Automatic data binding > Extensive Widget library encompassing Swing > and Java 2D™ API > Development tools including NetBeans™ and Eclipse IDE plugins 10
  • 11. JavaFX Script • Procedural update language with Java-like control structures and the update syntax (insert/delete) from XQuery • For UI designers convenience: > Cryptic Java operators (!=, !, &&, ||, ?:) were replaced with more well-known equivalents (<>, not, and, or, if/then/else) > Balance between having type declarations for readability and having the option of omitting them without hurting ability to understand the code 11
  • 12. JavaFX Script – A Simple Comparison In JavaFX Script In Java Main guitar class  picks.opacity = [0, .01 .. 1 ] dur 1000 linear        guitarAnimationThread = new StringOpThread();        ......        ......        if (guitarAnimationThread != null) {           guitarAnimationThread.run();        } In Java        ......... (SwingLabs Timing Framework) StringOpThread class        ...........     public void run() {            opacityBegin = 0.01; public void class Guitar {        opacityEnd = 1.0;     private GuitarPick pick = ...;            opacityIncreStep = 0.02;     public Guitar() {            opacitySleep = 2;         pick.setOpacity(.5f);         Animator a =         for(currOpacity = opacityBegin;   PropertySetter.createAnimator(               currOpacity < opacityEnd;                   currOpacity+=opacityIncreStep) { 300, pick, quot;opacityquot;, .5f, 1.0f);           setPickOpacity();         MouseTrigger.addTrigger(pick, a,           repaint(); MouseTriggerEvent.ENTER, true);           try {     }             thread.sleep(opacitySleep); }           } catch (InterruptedException e) { } 12
  • 13. Data Binding in JavaFX • Cause and Effect—Responding to change • The JavaFX bind operator—Allows dynamic content to be expressed declaratively • Dependency-based evaluation of any expression • Automated by the system—Rather than manually wired by the programmer • You just declare dependencies and the JavaFX runtime takes care of performing updates when things change • Eliminates listener patterns 13
  • 14. Benefits of static-typing • High-quality, compile-time error reporting • High-quality IDE support > Code-completion > Searching > Refactoring • Efficient compilation 14
  • 15. Consumer JRE • Quickstarter: Radically reduce the startup time for Java applications and applets. • Java Kernel: Reduce the time-to-install-and-launch when the user needs to install the JRE in order to run an application. • Deployment Toolkit: Enable easy detection and installation of the JRE. • Installer Improvements: Improve the user experience of installation. • Windows Graphics Performance: Enable default graphics acceleration for simple and advanced 2D rendering. • Nimbus Look & Feel : Release a new cross-platform look & feel based on Synth. • http://weblogs.java.net/blog/chet/archive/2007/05/consumer_jre_le.html 15
  • 16. Java Plug-In • Today > Robust mechanism to support Java content in the browser > Java <-> JavaScript Communication on all browsers > Access to the DOM – http://iris.dev.java.net/ : AJAX-like web app built with Java > Easy to deploy 3D content as Applets – JNLPAppletLauncher: http://applet-launcher.dev.java.net • Tomorrow > Will enable deployment of more sophisticated Applets > Control over heap size and low-level JVM command line arguments > Unification between Java Web Start and Java Plug-In – Using JNLP as standard deployment mechanism 16
  • 17. Summary JavaFX is a family of products and technologies • JavaFX Compiler development on openjfx.org • JavaFX Script simplifies GUI programming • More coming, watch this space • Ease of deployment > Consumer, modular JRE > JavaFX Mobile > JavaFX Tools > 17
  • 18. Further Information http://openjfx.org http://www.sun.com/javafx http://blogs.sun.com/chrisoliver http://blogs.sun.com/brewin http://iris.dev.java.net http://weblogs.java.net/blog/chet http://jfx.wikia.com 18