SlideShare una empresa de Scribd logo
1 de 38
Descargar para leer sin conexión
Project Zero
                              An Agile Web Platform

                               Jason R McGee, DE
                  Chief Architect, Project Zero and WebSphere XD
                                       IBM Corp




Thursday, December 13, 2007                                        1
What is Project Zero?


        Project Zero is an Agile Web
    

        Application Platform

     Architected  around Dynamic Scripting, REST, Rich
        Web Interfaces, AJAX, and Feeds

     Optimized  for speed of development, simple
        deployment, and cost-effective operation.




                              www.javapolis.com     2


Thursday, December 13, 2007                               2
The Basics




Thursday, December 13, 2007                3
Languages and Scripting


       Zero is a dynamic scripting platform
       Application Logic is created in one of two
        scripting languges
          Groovy (for people that prefer Java)
          PHP



       Java is positioned as the “system” language
         Mostly used to implement system extensions and application libraries
         Entire applications can be written in Java, if desired
          Requires more configuration
                                        www.javapolis.com


Thursday, December 13, 2007                                                      4
PHP Support

       The Project Zero PHP runtime (P8) is built on
        top of IBM’s J9 JVM
           Supports use of many PHP Extensions
              XAPI-C interface allows C-based extensions
              XAPI-J interface allows Java based extensions
           Supports bridging between Java and PHP
           All of PHP is not supported

       PHP runtime provided directly by Project Zero

       The goal of P8 in Project Zero is to provide
        PHP support within the Zero programming
        model

                                         www.javapolis.com


Thursday, December 13, 2007                                    5
Application Centric Runtime

        Project Zero is an application-centric runtime
    

              You create an application and run it
          

              You do not package an application and deploy it to
          
              a multi-application server
              Each application runs in its own process (JVM)
          

              Runtime is designed to be short lived
          

        Project Zero is a full stack runtime
    

              Everything needed to run the application is
          
              provided by Project Zero
                    Including the HTTP stack
                


              No external proxy or web server is required
          

              An external proxy is used for clustering and multi-
          
              app routing             www.javapolis.com      6


Thursday, December 13, 2007                                         6
Modular Architecture

     Zero applications are based on a very small core
       4.3 MBytes (includes Groovy).
         PHP adds additional 5 MBytes
       Core provides all of the Zero framework and runtime support,
        including HTTP transport
     Zero tools are provided separately
       Eclipse tools and Command Line tools are provided
       Both less than 4 MBytes
     Additional features provided in downloadable modules
       Applications declare a dependency on desired features (using Ivy)
       A package management system provides the ability to resolve
        those dependencies on the local machine or pulls them from a
        remote catalog server


                                    www.javapolis.com


Thursday, December 13, 2007                                                 7
EXECUTE: Runtime Characteristics

          Desired traits
      

                Nimble - Instant On
            

                Clean - Graceful recovery, isolation, tolerates “bad” code
            

                Cheap - Cost effective to run in small and large quantities
            

          Supported on “stock” JVM
      

                IBM, Sun, Mac, etc - Any JSE 5 JVM
            

                Currently Zero takes about 1 second to start and consumes
            
                about 20 MBytes of memory
          Working on a “new reality runtime”
      

                Modified JVM based on IBM J9 JVM
            

                Looking at sharing behavior and startup time
            

                Prototype shows startup times with an order of magnitude
            
                improvement and 2.4x improvement in memory footprint
                                        www.javapolis.com              8


Thursday, December 13, 2007                                                   8
Core Programming
                                    Model




Thursday, December 13, 2007                      9
Events

     All behavior in the system is modeled as a set of event
      Applications are built by handling these events and providing
       desired behavior
      Similar to AJAX model or classic UI programming


                                           GET


                                          POST
                              secure                       log   requestEnd
    requestBegin
                                           PUT


                                        DELETE




                                       www.javapolis.com


Thursday, December 13, 2007                                                   10
Event Handlers

    All handlers are stateless
    Can be implemented in Groovy, PHP, and Java
           println “Hello World”
  Groovy




           def onGET()                 function onGET()




                                                                PHP
           {                           {
              println “Hello World”       echo “Hello World”;
           }                           }

           public void onGET()
           {
              PrintWriter writer = (PrintWriter)zget(“/request/writer”);
              writer.println(“Hello World”);
           }
  Java




           /config/handlers += {
              “events” : “GET”,
              “handler” : “HelloWorld.class”,
              “conditions” : [“/request/path matches /hello”]
           }
                                         www.javapolis.com


Thursday, December 13, 2007                                                11
Global Context - State Management


       The Global Context (GC) provides access to and
        management of all application state
         Conceptually a map of data
       Externalizes all state from the application logic
         Enables the restartability of the JVM without data loss
         Enables clustering and scaling to be added transparently
      Simplifies and unifies access to application state
       and data structures and simplifies state passing
       within the application
      Contains information provided by both the runtime
       (such as request parameters) and by the
       application
                                       www.javapolis.com


Thursday, December 13, 2007                                          12
Global Content Zones


       Divided into 6 zones representing different data lifecycles
              Zone                  Scope/Visibility                      Lifecycle
         Application          All requests for all users of the     For the life of the
                              application                           application, but not
                                                                    “persistent”
         User                 All request for a particular user     For first access until
                              (HTTP Session equivalent)             user times out
         Request              All handlers along the path of a      For the duration of a
                              single request                        single request
         Event                All handlers for a single event       The duration of a
                                                                    single event
         Client               All handlers along the path of a      The duration of a
                              single request, including both        single request
                              browser and server
         Config               All event handlers, all the time      Entire life of the
                                                                    application. Read only.
                                                www.javapolis.com


Thursday, December 13, 2007                                                                   13
Accessing the Global Context


           Data is organized by a URI structure
      

                First part of URI is always the Zone name
            

                      /app, /user, /request, /config, /event, /client
                  


           Access is modeled after REST
      

                GET, PUT, POST, DELETE
            

                      Java
                         String path = GlobalContext.zget(“/request/path”);
                         GlobalContext.zput(“/user/counter”, i);

                      PHP
                          $path = zget(“/request/path”);
                          zput(“/user/counter”, $i);

                      Groovy (zget/zput work too)
                         def path = request.path[];
                         user.counter = i;
                                           www.javapolis.com             14


Thursday, December 13, 2007                                                   14
Value Pathing


            The GC provides simplified access to
       

            certain data structures
                 Called Value Pathing
             

            Understands
       

                 Maps, List, Objects, XML, JSON
             

            Allows read and write access to internals of
       

            the structure through the GC address
                              Map
                                  request.params.name[]
                              List
                                  request.list[2];
                              XML
                                  request.mydoc[/book/author];

                                          www.javapolis.com      15


Thursday, December 13, 2007                                           15
Application Directory Layout




                              www.javapolis.com


Thursday, December 13, 2007                       16
Virtualized Directories


       Project Zero provides seamless integration of
        directories across an application and its dependencies,
        while maintaining each as separate entities.
       All artifacts are searched within both the application
        and its declared dependencies




                               www.javapolis.com


Thursday, December 13, 2007                                       17
Configuration

                                               # Value set
                                               /config/http/port = 8080

                                               # List set
                                               /config/resources/defaultExtensions = [quot;.groovyquot;]

      Zero configuration file: zero.config    # List append
                                               /config/bindings/.groovy +=
      The config/zero.config file is          [quot;zero.core.groovysupport.bindings.DefaultBindingsquot;]
       processed at the start of a Zero        # Map set
       application.                            /config/test/map = { quot;aquot; : quot;bquot;, quot;cquot; : quot;dquot; }

      The content of a config/zero.config     # Map append
                                               /config/test/mapappend += { quot;aquot; : quot;bquot;, quot;cquot; : quot;dquot; }
       file is organized into quot;stanzasquot; of     /config/test/mapappend += { quot;xquot; : quot;yquot;, quot;wquot; : quot;zquot; }
       related key/value pairs. Stanzas are
                                               # Event handler
       associated with directives, such as     /config/handlers += {
       quot;store to the Global Contextquot; and         quot;eventsquot; : quot;GETquot;,
       quot;include another configuration file.”     quot;handlerquot; : quot;custom.Handler.classquot;
                                               }

                                               # Value reference (insert value read at config-load time)
                                               /config/property/myPrefix = quot;/foo/barquot;
                                               /config/test/value = quot;${/config/property/myPrefix}/batquot;

                                               # Variable set/value reference
                                               myPrefix = quot;/foo/barquot;
                                               /config/test/value = quot;${myPrefix}/batquot;

                                               # Include
                                               @include quot;${/config/dependencies/zero.core}/config/security/
                                               form.configquot;
                                               { quot;formLoginPagequot; : quot;/loginquot; }


                                                www.javapolis.com


Thursday, December 13, 2007                                                                                   18
Other core things we have not covered


       Rendering
         Direct
         Indirect

       File Serving
       Error Handling
       Logging/Tracing/Debugging
       Client Programming with Dojo
       Security
       Proxying

                              www.javapolis.com


Thursday, December 13, 2007                       19
DEMO

                              Hello World and Core Tooling




Thursday, December 13, 2007                                  20
Start of the Web App Framework


           Starting to solidify model for simplifying the UI
      

           side of a web application
           Numerous pieces in place
      

                Service model, Dojo, Reactive Client, Global Context
            

                and Events extended to the browser
           GC/Events on the Browser
      

                Allows you to map a physical UI event to a logical
            

                application event
                Can handle the application event on either the server
            

                or in the browser
                The DOM of the browser is exposed via the GC to
            

                the application on either side
                                    www.javapolis.com         21


Thursday, December 13, 2007                                             21
DEMO

                              Web Application Framework




Thursday, December 13, 2007                               22
RESTful Resources




                              www.javapolis.com


Thursday, December 13, 2007                       23
RESTful Resources




                              www.javapolis.com


Thursday, December 13, 2007                       24
Zero Resource Manager

       Zero Resource Manager (ZRM) extension provides a REST
   

       oriented view to data
             A layer of abstraction between the actual data store and REST
         

                  A constrained set of APIs that encourage RESTful application architecture
              

                  A data model that maps well to REST and feeds
              

                        Default top-down data mapping scheme & automatic table creation
                    
                  First class support for accessing data in a RESTful fashion both programmatically and
              

                  via HTTP
                        Resources defined in the data model can be accessed via HTTP with no manual coding
                    
                  First class support for accessing data as feeds
              

                  Robust frameworks for
              

                        Persistence, validation, and serialization
                    




                                                             www.javapolis.com                               25


Thursday, December 13, 2007                                                                                       25
Not an ORM


           Significantly constrained model from ORMs
      

                A data model that is geared towards REST rather than an
            
                arbitrary POJO model
                      No byte code weaving etc. object management magic needed
                  


                A default top down mapping scheme rather than mapping an
            
                arbitrary db schema to an arbitrary POJO model
                      No mapping tools or annotations required
                  


                No state maintained per user rather than a stateful POJO
            
                model
                      No complex persistence engine needed to keep track of
                  

                      dirtiness




                                           www.javapolis.com              26


Thursday, December 13, 2007                                                      26
Resource model

          The resource model is a collection of resource type definitions
      

                A resource type definition contains the definitions for fields, constraints,
            
                relationships, and collections
          The resource type definitions
      

                Are datastore independent
            

                      Default top-down mapping scheme for RDBs
                  


                Can be shared across applications
            

                Can be created and manipulated either declaratively / programmatically or via
            
                HTTP
                Defined in a groovy script in /app/models
            



                def fields = { person ->
                   person.firstname CharField, maxlength: 35
                   person.lastname   CharField, maxlength: 50
                   person.age        DateField
                }

                                                 www.javapolis.com                         27


Thursday, December 13, 2007                                                                     27
DEMO

                              Employee Demo (ZRM)




Thursday, December 13, 2007                         28
zero.data (powered by PureQuery)


           Want full power of SQL?
      



           Use zero.data
      



           Provides inline SQL directly from scripts
      

           Designed to allow straight SQL while
      

           simplifying common query patterns
                Result set access, output and formatting
            

                Parameter passing
            

                Paging, etc
            
                                  www.javapolis.com        29


Thursday, December 13, 2007                                     29
DEMO

                              Employee Demo (zero.data)




Thursday, December 13, 2007                               30
Assemble

           Assemble component provides the capability to access
      

           different services and assemble them into a Project Zero
           application
                Constructing a feed style application that processes and
            

                aggregates a set of feeds from different sources.
                Constructing a conversational application that coordinates
            

                interactions with services.
                Allowing Project Zero applications to access services through a
            

                common API.
           Provides
      

                A simple XML model for describing a sequence of
            

                activities that provide function for an application
                A flow engine to execute the XML flow description
            

                A graphical tool for constructing flows
            


                                        www.javapolis.com             31


Thursday, December 13, 2007                                                       31
DEMO

                              Feed Aggregator Flow




Thursday, December 13, 2007                          32
Catalog of Content

         Data Formats
    

              JSON, XML, ATOM (including APP), RSS
          


         Flow Engine
    

           Feed and Control flows

         Accessing backend resources
    

              Data Zero, HTTP, Mail
          


         Presentation Components
    

              Dojo, Reactive Client, Web Flow, Templates
          


         Services and Widgets
    

              tagging, comments, ratings, blogs, profile, news,
          

              reviews, ratings, polls, wiki pages, Amazon (ECS,
              EC2, S3), Google, EBay
         Security
    

              Active Content Filtering, OpenID
          


         Misc
    

              Apache mod_proxy config
          

              Zero Catalog Application
          
                                               www.javapolis.com   33
              Documentation Generator (REST Doc)
          

Thursday, December 13, 2007                                             33
The Zero Community




Thursday, December 13, 2007                        34
The Home of Project Zero




                              www.javapolis.com   1

Thursday, December 13, 2007                           35
Purpose of ProjectZero.org


       Experiment in a more transparent form of
        commercial development

       Community Driven Commercial Development
         Community-Driven means that we want feedback, insight, suggestions,
          criticism, and dialogue with the users of Project Zero
         Commercial means that this is not an open source project. The licensing
          is very liberal, but not completely open
         Development means that this community is about the technology and how
          it is developed and evolves.




                                       www.javapolis.com                       2

Thursday, December 13, 2007                                                         36
What is available?

      Wiki containing documentation, project information, roadmaps, design
       documents, demos, samples, iCal calendar, future plans, etc
      Forum for interactive discussion
          Help and Feedback for questions from users
          Developer Alerts to notify users of new features and breaking changes
          Zero Development for publically accessible discussion amongst the Zero development
           team
      Blogs for alerts and personal commentary
          Product blog
          Personal blogs of the project leaders
      Downloads
          Eclipse Tools, Command Line tools and Zero components
      Bug Tracking System (Bugzilla)
      Source code (Subversion)
      An online catalog of Zero extensions
          Soon to be open for user contributions

          Zero Alive! - online Zero playground
     



                                                   www.javapolis.com                            3

Thursday, December 13, 2007                                                                         37
Q&A

                       www.projectzero.org



Thursday, December 13, 2007                  38

Más contenido relacionado

La actualidad más candente

Jalimo Slides Linuxtag2007 (English)
Jalimo Slides Linuxtag2007 (English)Jalimo Slides Linuxtag2007 (English)
Jalimo Slides Linuxtag2007 (English)smancke
 
Net Beans61 Platform
Net Beans61 PlatformNet Beans61 Platform
Net Beans61 Platformsatyajit_t
 
Getting Started with Java EE 7
Getting Started with Java EE 7Getting Started with Java EE 7
Getting Started with Java EE 7Arun Gupta
 
Why jakarta ee matters (ConFoo 2021)
Why jakarta ee matters (ConFoo 2021)Why jakarta ee matters (ConFoo 2021)
Why jakarta ee matters (ConFoo 2021)Ryan Cuprak
 
Great Java Application Server Debate
Great Java Application Server DebateGreat Java Application Server Debate
Great Java Application Server DebateHamed Hatami
 
JVM Support for Multitenant Applications - Steve Poole (IBM)
JVM Support for Multitenant Applications - Steve Poole (IBM)JVM Support for Multitenant Applications - Steve Poole (IBM)
JVM Support for Multitenant Applications - Steve Poole (IBM)jaxLondonConference
 
Vert.x - Tehran JUG meeting Aug-2014 - Saeed Zarinfam
Vert.x - Tehran JUG meeting Aug-2014 - Saeed ZarinfamVert.x - Tehran JUG meeting Aug-2014 - Saeed Zarinfam
Vert.x - Tehran JUG meeting Aug-2014 - Saeed ZarinfamSaeed Zarinfam
 
Java EE 7: Boosting Productivity and Embracing HTML5
Java EE 7: Boosting Productivity and Embracing HTML5Java EE 7: Boosting Productivity and Embracing HTML5
Java EE 7: Boosting Productivity and Embracing HTML5Arun Gupta
 
Developing Liferay Plugins with Maven
Developing Liferay Plugins with MavenDeveloping Liferay Plugins with Maven
Developing Liferay Plugins with MavenMika Koivisto
 
Overview of PaaS: Java experience
Overview of PaaS: Java experienceOverview of PaaS: Java experience
Overview of PaaS: Java experienceAlex Tumanoff
 
Exploring Java Heap Dumps (Oracle Code One 2018)
Exploring Java Heap Dumps (Oracle Code One 2018)Exploring Java Heap Dumps (Oracle Code One 2018)
Exploring Java Heap Dumps (Oracle Code One 2018)Ryan Cuprak
 
A Hitchhiker's Guide to Cloud Native Java EE
A Hitchhiker's Guide to Cloud Native Java EEA Hitchhiker's Guide to Cloud Native Java EE
A Hitchhiker's Guide to Cloud Native Java EEMario-Leander Reimer
 
Simple tweaks to get the most out of your jvm
Simple tweaks to get the most out of your jvmSimple tweaks to get the most out of your jvm
Simple tweaks to get the most out of your jvmJamie Coleman
 
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
 
Rami Sayar - Node microservices with Docker
Rami Sayar - Node microservices with DockerRami Sayar - Node microservices with Docker
Rami Sayar - Node microservices with DockerWeb à Québec
 
DOAG 2011 - Upgrade Guide for Oracle ADF on WebLogic Server
DOAG 2011 - Upgrade Guide for Oracle ADF on WebLogic ServerDOAG 2011 - Upgrade Guide for Oracle ADF on WebLogic Server
DOAG 2011 - Upgrade Guide for Oracle ADF on WebLogic ServerAndreas Koop
 
Modular Java applications with OSGi on Apache Karaf
Modular Java applications with OSGi on Apache KarafModular Java applications with OSGi on Apache Karaf
Modular Java applications with OSGi on Apache KarafIoan Eugen Stan
 

La actualidad más candente (20)

Jalimo Slides Linuxtag2007 (English)
Jalimo Slides Linuxtag2007 (English)Jalimo Slides Linuxtag2007 (English)
Jalimo Slides Linuxtag2007 (English)
 
Net Beans61 Platform
Net Beans61 PlatformNet Beans61 Platform
Net Beans61 Platform
 
Getting Started with Java EE 7
Getting Started with Java EE 7Getting Started with Java EE 7
Getting Started with Java EE 7
 
Why jakarta ee matters (ConFoo 2021)
Why jakarta ee matters (ConFoo 2021)Why jakarta ee matters (ConFoo 2021)
Why jakarta ee matters (ConFoo 2021)
 
Great Java Application Server Debate
Great Java Application Server DebateGreat Java Application Server Debate
Great Java Application Server Debate
 
Mini-Training: Node.js
Mini-Training: Node.jsMini-Training: Node.js
Mini-Training: Node.js
 
JVM Support for Multitenant Applications - Steve Poole (IBM)
JVM Support for Multitenant Applications - Steve Poole (IBM)JVM Support for Multitenant Applications - Steve Poole (IBM)
JVM Support for Multitenant Applications - Steve Poole (IBM)
 
Vert.x - Tehran JUG meeting Aug-2014 - Saeed Zarinfam
Vert.x - Tehran JUG meeting Aug-2014 - Saeed ZarinfamVert.x - Tehran JUG meeting Aug-2014 - Saeed Zarinfam
Vert.x - Tehran JUG meeting Aug-2014 - Saeed Zarinfam
 
Java EE 7: Boosting Productivity and Embracing HTML5
Java EE 7: Boosting Productivity and Embracing HTML5Java EE 7: Boosting Productivity and Embracing HTML5
Java EE 7: Boosting Productivity and Embracing HTML5
 
Developing Liferay Plugins with Maven
Developing Liferay Plugins with MavenDeveloping Liferay Plugins with Maven
Developing Liferay Plugins with Maven
 
Overview of PaaS: Java experience
Overview of PaaS: Java experienceOverview of PaaS: Java experience
Overview of PaaS: Java experience
 
Exploring Java Heap Dumps (Oracle Code One 2018)
Exploring Java Heap Dumps (Oracle Code One 2018)Exploring Java Heap Dumps (Oracle Code One 2018)
Exploring Java Heap Dumps (Oracle Code One 2018)
 
A Hitchhiker's Guide to Cloud Native Java EE
A Hitchhiker's Guide to Cloud Native Java EEA Hitchhiker's Guide to Cloud Native Java EE
A Hitchhiker's Guide to Cloud Native Java EE
 
Simple tweaks to get the most out of your jvm
Simple tweaks to get the most out of your jvmSimple tweaks to get the most out of your jvm
Simple tweaks to get the most out of your jvm
 
Liferay maven sdk
Liferay maven sdkLiferay maven sdk
Liferay maven sdk
 
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
 
Glass Fishv3 March2010
Glass Fishv3 March2010Glass Fishv3 March2010
Glass Fishv3 March2010
 
Rami Sayar - Node microservices with Docker
Rami Sayar - Node microservices with DockerRami Sayar - Node microservices with Docker
Rami Sayar - Node microservices with Docker
 
DOAG 2011 - Upgrade Guide for Oracle ADF on WebLogic Server
DOAG 2011 - Upgrade Guide for Oracle ADF on WebLogic ServerDOAG 2011 - Upgrade Guide for Oracle ADF on WebLogic Server
DOAG 2011 - Upgrade Guide for Oracle ADF on WebLogic Server
 
Modular Java applications with OSGi on Apache Karaf
Modular Java applications with OSGi on Apache KarafModular Java applications with OSGi on Apache Karaf
Modular Java applications with OSGi on Apache Karaf
 

Similar a Project Zero For Javapolis 2007

GlassFish 3.1 at JCertif 2011
GlassFish 3.1 at JCertif 2011GlassFish 3.1 at JCertif 2011
GlassFish 3.1 at JCertif 2011Arun Gupta
 
GlassFish Server 3.1: Deploying your Java EE 6 Applications
GlassFish Server 3.1: Deploying your Java EE 6 ApplicationsGlassFish Server 3.1: Deploying your Java EE 6 Applications
GlassFish Server 3.1: Deploying your Java EE 6 ApplicationsArun Gupta
 
Deploying Java EE 6 Apps in a Cluster: GlassFish 3.1 at Dallas Tech Fest 2011
Deploying Java EE 6 Apps in a Cluster: GlassFish 3.1 at Dallas Tech Fest 2011Deploying Java EE 6 Apps in a Cluster: GlassFish 3.1 at Dallas Tech Fest 2011
Deploying Java EE 6 Apps in a Cluster: GlassFish 3.1 at Dallas Tech Fest 2011Arun Gupta
 
How to deploy a Java application on Google App engine Flexible environment
How to deploy a Java application on Google App engine Flexible environmentHow to deploy a Java application on Google App engine Flexible environment
How to deploy a Java application on Google App engine Flexible environmentMichelantonio Trizio
 
Cannibalising The Google App Engine
Cannibalising The  Google  App  EngineCannibalising The  Google  App  Engine
Cannibalising The Google App Enginecatherinewall
 
Boston 2011 OTN Developer Days - GlassFish
Boston 2011 OTN Developer Days - GlassFishBoston 2011 OTN Developer Days - GlassFish
Boston 2011 OTN Developer Days - GlassFishArun Gupta
 
GlassFish OSGi Server
GlassFish OSGi ServerGlassFish OSGi Server
GlassFish OSGi ServerArtur Alves
 
Java EE 6 Clustering with Glassfish 3.1
Java EE 6 Clustering with Glassfish 3.1 Java EE 6 Clustering with Glassfish 3.1
Java EE 6 Clustering with Glassfish 3.1 Shreedhar Ganapathy
 
GlassFish 3.1 – Simplifying your Java EE 6 Development and Deployment @ JAX L...
GlassFish 3.1 – Simplifying your Java EE 6 Development and Deployment @ JAX L...GlassFish 3.1 – Simplifying your Java EE 6 Development and Deployment @ JAX L...
GlassFish 3.1 – Simplifying your Java EE 6 Development and Deployment @ JAX L...Arun Gupta
 
Server Side Javascript
Server Side JavascriptServer Side Javascript
Server Side Javascriptrajivmordani
 
Dynamic Languages Web Frameworks Indicthreads 2009
Dynamic Languages Web Frameworks Indicthreads 2009Dynamic Languages Web Frameworks Indicthreads 2009
Dynamic Languages Web Frameworks Indicthreads 2009Arun Gupta
 
Development with JavaFX 9 in JDK 9.0.1
Development with JavaFX 9 in JDK 9.0.1Development with JavaFX 9 in JDK 9.0.1
Development with JavaFX 9 in JDK 9.0.1Wolfgang Weigend
 
eXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework IntroductioneXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework Introductionvstorm83
 
Advance java prasentation
Advance java prasentationAdvance java prasentation
Advance java prasentationdhananajay95
 
OTN Developer Days - GlassFish
OTN Developer Days - GlassFishOTN Developer Days - GlassFish
OTN Developer Days - GlassFishglassfish
 
Glassfish An Introduction
Glassfish An IntroductionGlassfish An Introduction
Glassfish An IntroductionJumping Bean
 

Similar a Project Zero For Javapolis 2007 (20)

GlassFish 3.1 at JCertif 2011
GlassFish 3.1 at JCertif 2011GlassFish 3.1 at JCertif 2011
GlassFish 3.1 at JCertif 2011
 
GlassFish Server 3.1: Deploying your Java EE 6 Applications
GlassFish Server 3.1: Deploying your Java EE 6 ApplicationsGlassFish Server 3.1: Deploying your Java EE 6 Applications
GlassFish Server 3.1: Deploying your Java EE 6 Applications
 
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
 
How to deploy a Java application on Google App engine Flexible environment
How to deploy a Java application on Google App engine Flexible environmentHow to deploy a Java application on Google App engine Flexible environment
How to deploy a Java application on Google App engine Flexible environment
 
Cannibalising The Google App Engine
Cannibalising The  Google  App  EngineCannibalising The  Google  App  Engine
Cannibalising The Google App Engine
 
Boston 2011 OTN Developer Days - GlassFish
Boston 2011 OTN Developer Days - GlassFishBoston 2011 OTN Developer Days - GlassFish
Boston 2011 OTN Developer Days - GlassFish
 
GlassFish OSGi Server
GlassFish OSGi ServerGlassFish OSGi Server
GlassFish OSGi Server
 
Java EE 6 Clustering with Glassfish 3.1
Java EE 6 Clustering with Glassfish 3.1 Java EE 6 Clustering with Glassfish 3.1
Java EE 6 Clustering with Glassfish 3.1
 
GlassFish 3.1 – Simplifying your Java EE 6 Development and Deployment @ JAX L...
GlassFish 3.1 – Simplifying your Java EE 6 Development and Deployment @ JAX L...GlassFish 3.1 – Simplifying your Java EE 6 Development and Deployment @ JAX L...
GlassFish 3.1 – Simplifying your Java EE 6 Development and Deployment @ JAX L...
 
Project Zero Php Quebec
Project Zero Php QuebecProject Zero Php Quebec
Project Zero Php Quebec
 
Server Side Javascript
Server Side JavascriptServer Side Javascript
Server Side Javascript
 
Dynamic Languages Web Frameworks Indicthreads 2009
Dynamic Languages Web Frameworks Indicthreads 2009Dynamic Languages Web Frameworks Indicthreads 2009
Dynamic Languages Web Frameworks Indicthreads 2009
 
Project Zero JavaOne 2008
Project Zero JavaOne 2008Project Zero JavaOne 2008
Project Zero JavaOne 2008
 
Development with JavaFX 9 in JDK 9.0.1
Development with JavaFX 9 in JDK 9.0.1Development with JavaFX 9 in JDK 9.0.1
Development with JavaFX 9 in JDK 9.0.1
 
Splunking the JVM
Splunking the JVMSplunking the JVM
Splunking the JVM
 
GlassFish v3 Prelude Aquarium Paris
GlassFish v3 Prelude Aquarium ParisGlassFish v3 Prelude Aquarium Paris
GlassFish v3 Prelude Aquarium Paris
 
eXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework IntroductioneXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework Introduction
 
Advance java prasentation
Advance java prasentationAdvance java prasentation
Advance java prasentation
 
OTN Developer Days - GlassFish
OTN Developer Days - GlassFishOTN Developer Days - GlassFish
OTN Developer Days - GlassFish
 
Glassfish An Introduction
Glassfish An IntroductionGlassfish An Introduction
Glassfish An Introduction
 

Último

A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 

Último (20)

A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 

Project Zero For Javapolis 2007

  • 1. Project Zero An Agile Web Platform Jason R McGee, DE Chief Architect, Project Zero and WebSphere XD IBM Corp Thursday, December 13, 2007 1
  • 2. What is Project Zero? Project Zero is an Agile Web  Application Platform  Architected around Dynamic Scripting, REST, Rich Web Interfaces, AJAX, and Feeds  Optimized for speed of development, simple deployment, and cost-effective operation. www.javapolis.com 2 Thursday, December 13, 2007 2
  • 4. Languages and Scripting  Zero is a dynamic scripting platform  Application Logic is created in one of two scripting languges  Groovy (for people that prefer Java)  PHP  Java is positioned as the “system” language Mostly used to implement system extensions and application libraries Entire applications can be written in Java, if desired Requires more configuration www.javapolis.com Thursday, December 13, 2007 4
  • 5. PHP Support  The Project Zero PHP runtime (P8) is built on top of IBM’s J9 JVM Supports use of many PHP Extensions XAPI-C interface allows C-based extensions XAPI-J interface allows Java based extensions Supports bridging between Java and PHP All of PHP is not supported  PHP runtime provided directly by Project Zero  The goal of P8 in Project Zero is to provide PHP support within the Zero programming model www.javapolis.com Thursday, December 13, 2007 5
  • 6. Application Centric Runtime Project Zero is an application-centric runtime  You create an application and run it  You do not package an application and deploy it to  a multi-application server Each application runs in its own process (JVM)  Runtime is designed to be short lived  Project Zero is a full stack runtime  Everything needed to run the application is  provided by Project Zero Including the HTTP stack  No external proxy or web server is required  An external proxy is used for clustering and multi-  app routing www.javapolis.com 6 Thursday, December 13, 2007 6
  • 7. Modular Architecture  Zero applications are based on a very small core  4.3 MBytes (includes Groovy).  PHP adds additional 5 MBytes  Core provides all of the Zero framework and runtime support, including HTTP transport  Zero tools are provided separately  Eclipse tools and Command Line tools are provided  Both less than 4 MBytes  Additional features provided in downloadable modules  Applications declare a dependency on desired features (using Ivy)  A package management system provides the ability to resolve those dependencies on the local machine or pulls them from a remote catalog server www.javapolis.com Thursday, December 13, 2007 7
  • 8. EXECUTE: Runtime Characteristics Desired traits  Nimble - Instant On  Clean - Graceful recovery, isolation, tolerates “bad” code  Cheap - Cost effective to run in small and large quantities  Supported on “stock” JVM  IBM, Sun, Mac, etc - Any JSE 5 JVM  Currently Zero takes about 1 second to start and consumes  about 20 MBytes of memory Working on a “new reality runtime”  Modified JVM based on IBM J9 JVM  Looking at sharing behavior and startup time  Prototype shows startup times with an order of magnitude  improvement and 2.4x improvement in memory footprint www.javapolis.com 8 Thursday, December 13, 2007 8
  • 9. Core Programming Model Thursday, December 13, 2007 9
  • 10. Events  All behavior in the system is modeled as a set of event  Applications are built by handling these events and providing desired behavior  Similar to AJAX model or classic UI programming GET POST secure log requestEnd requestBegin PUT DELETE www.javapolis.com Thursday, December 13, 2007 10
  • 11. Event Handlers  All handlers are stateless  Can be implemented in Groovy, PHP, and Java println “Hello World” Groovy def onGET() function onGET() PHP { { println “Hello World” echo “Hello World”; } } public void onGET() { PrintWriter writer = (PrintWriter)zget(“/request/writer”); writer.println(“Hello World”); } Java /config/handlers += { “events” : “GET”, “handler” : “HelloWorld.class”, “conditions” : [“/request/path matches /hello”] } www.javapolis.com Thursday, December 13, 2007 11
  • 12. Global Context - State Management  The Global Context (GC) provides access to and management of all application state  Conceptually a map of data  Externalizes all state from the application logic Enables the restartability of the JVM without data loss Enables clustering and scaling to be added transparently Simplifies and unifies access to application state and data structures and simplifies state passing within the application Contains information provided by both the runtime (such as request parameters) and by the application www.javapolis.com Thursday, December 13, 2007 12
  • 13. Global Content Zones  Divided into 6 zones representing different data lifecycles Zone Scope/Visibility Lifecycle Application All requests for all users of the For the life of the application application, but not “persistent” User All request for a particular user For first access until (HTTP Session equivalent) user times out Request All handlers along the path of a For the duration of a single request single request Event All handlers for a single event The duration of a single event Client All handlers along the path of a The duration of a single request, including both single request browser and server Config All event handlers, all the time Entire life of the application. Read only. www.javapolis.com Thursday, December 13, 2007 13
  • 14. Accessing the Global Context Data is organized by a URI structure  First part of URI is always the Zone name  /app, /user, /request, /config, /event, /client  Access is modeled after REST  GET, PUT, POST, DELETE  Java String path = GlobalContext.zget(“/request/path”); GlobalContext.zput(“/user/counter”, i); PHP $path = zget(“/request/path”); zput(“/user/counter”, $i); Groovy (zget/zput work too) def path = request.path[]; user.counter = i; www.javapolis.com 14 Thursday, December 13, 2007 14
  • 15. Value Pathing The GC provides simplified access to  certain data structures Called Value Pathing  Understands  Maps, List, Objects, XML, JSON  Allows read and write access to internals of  the structure through the GC address Map request.params.name[] List request.list[2]; XML request.mydoc[/book/author]; www.javapolis.com 15 Thursday, December 13, 2007 15
  • 16. Application Directory Layout www.javapolis.com Thursday, December 13, 2007 16
  • 17. Virtualized Directories  Project Zero provides seamless integration of directories across an application and its dependencies, while maintaining each as separate entities.  All artifacts are searched within both the application and its declared dependencies www.javapolis.com Thursday, December 13, 2007 17
  • 18. Configuration # Value set /config/http/port = 8080 # List set /config/resources/defaultExtensions = [quot;.groovyquot;]  Zero configuration file: zero.config # List append /config/bindings/.groovy +=  The config/zero.config file is [quot;zero.core.groovysupport.bindings.DefaultBindingsquot;] processed at the start of a Zero # Map set application. /config/test/map = { quot;aquot; : quot;bquot;, quot;cquot; : quot;dquot; }  The content of a config/zero.config # Map append /config/test/mapappend += { quot;aquot; : quot;bquot;, quot;cquot; : quot;dquot; } file is organized into quot;stanzasquot; of /config/test/mapappend += { quot;xquot; : quot;yquot;, quot;wquot; : quot;zquot; } related key/value pairs. Stanzas are # Event handler associated with directives, such as /config/handlers += { quot;store to the Global Contextquot; and quot;eventsquot; : quot;GETquot;, quot;include another configuration file.” quot;handlerquot; : quot;custom.Handler.classquot; } # Value reference (insert value read at config-load time) /config/property/myPrefix = quot;/foo/barquot; /config/test/value = quot;${/config/property/myPrefix}/batquot; # Variable set/value reference myPrefix = quot;/foo/barquot; /config/test/value = quot;${myPrefix}/batquot; # Include @include quot;${/config/dependencies/zero.core}/config/security/ form.configquot; { quot;formLoginPagequot; : quot;/loginquot; } www.javapolis.com Thursday, December 13, 2007 18
  • 19. Other core things we have not covered  Rendering Direct Indirect  File Serving  Error Handling  Logging/Tracing/Debugging  Client Programming with Dojo  Security  Proxying www.javapolis.com Thursday, December 13, 2007 19
  • 20. DEMO Hello World and Core Tooling Thursday, December 13, 2007 20
  • 21. Start of the Web App Framework Starting to solidify model for simplifying the UI  side of a web application Numerous pieces in place  Service model, Dojo, Reactive Client, Global Context  and Events extended to the browser GC/Events on the Browser  Allows you to map a physical UI event to a logical  application event Can handle the application event on either the server  or in the browser The DOM of the browser is exposed via the GC to  the application on either side www.javapolis.com 21 Thursday, December 13, 2007 21
  • 22. DEMO Web Application Framework Thursday, December 13, 2007 22
  • 23. RESTful Resources www.javapolis.com Thursday, December 13, 2007 23
  • 24. RESTful Resources www.javapolis.com Thursday, December 13, 2007 24
  • 25. Zero Resource Manager Zero Resource Manager (ZRM) extension provides a REST  oriented view to data A layer of abstraction between the actual data store and REST  A constrained set of APIs that encourage RESTful application architecture  A data model that maps well to REST and feeds  Default top-down data mapping scheme & automatic table creation  First class support for accessing data in a RESTful fashion both programmatically and  via HTTP Resources defined in the data model can be accessed via HTTP with no manual coding  First class support for accessing data as feeds  Robust frameworks for  Persistence, validation, and serialization  www.javapolis.com 25 Thursday, December 13, 2007 25
  • 26. Not an ORM Significantly constrained model from ORMs  A data model that is geared towards REST rather than an  arbitrary POJO model No byte code weaving etc. object management magic needed  A default top down mapping scheme rather than mapping an  arbitrary db schema to an arbitrary POJO model No mapping tools or annotations required  No state maintained per user rather than a stateful POJO  model No complex persistence engine needed to keep track of  dirtiness www.javapolis.com 26 Thursday, December 13, 2007 26
  • 27. Resource model The resource model is a collection of resource type definitions  A resource type definition contains the definitions for fields, constraints,  relationships, and collections The resource type definitions  Are datastore independent  Default top-down mapping scheme for RDBs  Can be shared across applications  Can be created and manipulated either declaratively / programmatically or via  HTTP Defined in a groovy script in /app/models  def fields = { person -> person.firstname CharField, maxlength: 35 person.lastname CharField, maxlength: 50 person.age DateField } www.javapolis.com 27 Thursday, December 13, 2007 27
  • 28. DEMO Employee Demo (ZRM) Thursday, December 13, 2007 28
  • 29. zero.data (powered by PureQuery) Want full power of SQL?  Use zero.data  Provides inline SQL directly from scripts  Designed to allow straight SQL while  simplifying common query patterns Result set access, output and formatting  Parameter passing  Paging, etc  www.javapolis.com 29 Thursday, December 13, 2007 29
  • 30. DEMO Employee Demo (zero.data) Thursday, December 13, 2007 30
  • 31. Assemble Assemble component provides the capability to access  different services and assemble them into a Project Zero application Constructing a feed style application that processes and  aggregates a set of feeds from different sources. Constructing a conversational application that coordinates  interactions with services. Allowing Project Zero applications to access services through a  common API. Provides  A simple XML model for describing a sequence of  activities that provide function for an application A flow engine to execute the XML flow description  A graphical tool for constructing flows  www.javapolis.com 31 Thursday, December 13, 2007 31
  • 32. DEMO Feed Aggregator Flow Thursday, December 13, 2007 32
  • 33. Catalog of Content Data Formats  JSON, XML, ATOM (including APP), RSS  Flow Engine   Feed and Control flows Accessing backend resources  Data Zero, HTTP, Mail  Presentation Components  Dojo, Reactive Client, Web Flow, Templates  Services and Widgets  tagging, comments, ratings, blogs, profile, news,  reviews, ratings, polls, wiki pages, Amazon (ECS, EC2, S3), Google, EBay Security  Active Content Filtering, OpenID  Misc  Apache mod_proxy config  Zero Catalog Application  www.javapolis.com 33 Documentation Generator (REST Doc)  Thursday, December 13, 2007 33
  • 34. The Zero Community Thursday, December 13, 2007 34
  • 35. The Home of Project Zero www.javapolis.com 1 Thursday, December 13, 2007 35
  • 36. Purpose of ProjectZero.org  Experiment in a more transparent form of commercial development  Community Driven Commercial Development Community-Driven means that we want feedback, insight, suggestions, criticism, and dialogue with the users of Project Zero Commercial means that this is not an open source project. The licensing is very liberal, but not completely open Development means that this community is about the technology and how it is developed and evolves. www.javapolis.com 2 Thursday, December 13, 2007 36
  • 37. What is available?  Wiki containing documentation, project information, roadmaps, design documents, demos, samples, iCal calendar, future plans, etc  Forum for interactive discussion  Help and Feedback for questions from users  Developer Alerts to notify users of new features and breaking changes  Zero Development for publically accessible discussion amongst the Zero development team  Blogs for alerts and personal commentary  Product blog  Personal blogs of the project leaders  Downloads  Eclipse Tools, Command Line tools and Zero components  Bug Tracking System (Bugzilla)  Source code (Subversion)  An online catalog of Zero extensions  Soon to be open for user contributions Zero Alive! - online Zero playground  www.javapolis.com 3 Thursday, December 13, 2007 37
  • 38. Q&A www.projectzero.org Thursday, December 13, 2007 38