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-java
Keith Bennett
 
Play Framework: The Basics
Play Framework: The BasicsPlay Framework: The Basics
Play Framework: The Basics
Philip Langer
 

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 V1
rajivmordani
 
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
Fred Sauer
 
Wicket Deliver Your Webapp On Time
Wicket Deliver Your Webapp On TimeWicket Deliver Your Webapp On Time
Wicket Deliver Your Webapp On Time
Will Hoover
 
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
akshay1213
 
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
QUONTRASOLUTIONS
 
Web polyglot programming
Web polyglot programmingWeb polyglot programming
Web polyglot programming
Dmitry Buzdin
 

Ä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 Tour
oscon2007
 
Solr Presentation5
Solr Presentation5Solr Presentation5
Solr Presentation5
oscon2007
 
Os Fitzpatrick Sussman Wiifm
Os Fitzpatrick Sussman WiifmOs Fitzpatrick Sussman Wiifm
Os Fitzpatrick Sussman Wiifm
oscon2007
 
Performance Whack A Mole
Performance Whack A MolePerformance Whack A Mole
Performance Whack A Mole
oscon2007
 
Os Lanphier Brashears
Os Lanphier BrashearsOs Lanphier Brashears
Os Lanphier Brashears
oscon2007
 
Os Fitzpatrick Sussman Swp
Os Fitzpatrick Sussman SwpOs Fitzpatrick Sussman Swp
Os Fitzpatrick Sussman Swp
oscon2007
 
Os Berlin Dispelling Myths
Os Berlin Dispelling MythsOs Berlin Dispelling Myths
Os Berlin Dispelling Myths
oscon2007
 
Os Keysholistic
Os KeysholisticOs Keysholistic
Os Keysholistic
oscon2007
 
Os Jonphillips
Os JonphillipsOs Jonphillips
Os Jonphillips
oscon2007
 
Os Urnerupdated
Os UrnerupdatedOs Urnerupdated
Os Urnerupdated
oscon2007
 

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

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Kürzlich hochgeladen (20)

presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 

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