SlideShare une entreprise Scribd logo
1  sur  19
Télécharger pour lire hors ligne
JL-1




                        Roma <Meta>
                         Framework
            Introduction and main concepts

      Luca Garulli
   CTO@AssetData.it             CTO at AssetData, Technical Manager
                                 at Romulus consortium, Author of
http://zion-city.blogspot.com   Roma Framework and OrientDB Open
 http://twitter.com/lgarulli              Source projects
Development Scenario I
     Choose the right framework between hundreds

Each framework is proprietary,
so migration is too much
difficult, or sometimes
impossible


  Learning curve often is steep
   and requires a lot of time to
learn before to understand if it's
       the right one for us
                             2
Development Scenario II
           What happens if you
         discover that the tool or
       the framework you choose
          doesn’t support some
        features we need or that
           the best choice was
              another one?

        Changing it’s too costly,
        sometime “impossible”
         3
Do you need a <meta> framework?

   Set of behavior interfaces instead of
          framework APIs directly.

The aim is to cover the 80-90% of the most
common use cases. For the uncovered 10-
      20% you can use the framework
         implementation directly

Migration to another supported framework
        without change the code

                     4
Domain centric view
                                Echo2     Janiculum                                 Modules can
                                                                                      implement
           JDO                                                     Java
                                                                 Resource           aspects of the
      JPA                               View                      Bundle           meta-framework
                                                    Internatio
                 Persistence
                 (repository)                       nalization
                                                      (I18N)                             CRUD
                                   Domain
                                    model                                                 Login
Custom,                                                                     Http
            Authentication            and             Session
 LDAP                              business
                                                                       Portlet        User & Profile
                                     logic
                                                                                          Jetty
                   Workflow                         Others

                                   Monitoring
          Tevere                                          Aspects define the
                                                              interfaces
                                        JMX               (behaviour) of the
                                                           meta-framework
                                                5
Aspects
 Authentication •Scheduler
       •Flow                   •Security
   •Enterprise                •Semantic
       •Hook                •Serialization
•I18n (internationalization) •Service
     •Logging                   •Session
   •Monitoring               •Validation
  •Persistence                   •View
     •Registry                •Workflow
    •Reporting
            6
POJO is the answer for all



•POJO       •
            •
•(Plain Old Java Object)


            7
Everything is a POJO
  •The application model is composed by
                  POJOs
                    •
•The domain entities synchronized with the
          database are POJOs

 The Business Logic is written in POJOs
                   •
     •The Web Services are POJOs
                   •
        •Guess the Web pages?
                    8
Enriched Meta Model I
•Roma auto discovers all the model
              of your
    •application and generate:
            •
         •Forms,
     •Database tables
 •OR-mapping configuration,
      •Web services,
     •and much more!
                9
Enriched Meta Model II
    •But Java as language is not enough to
 express a complete model. What means this?
                      •
•private List<Contact> contacts;
                         •
  •Is it a relationship? 1-N or N-M? If yes it's
                 embedded or not?
                         •
•How can I render it in my Web Page?

       •A List, a Table or a Select field?
                        10
Enriched Meta Model III
     •We need a way to enrich the meta-model using
       Java5+ Annotations or Xml Annotations
•ContactInstance.java:
•
•public class ContactInstance{
• @ViewField(render = ViewConstants.RENDER_TABLE) Java5+ Annotations pro:
• private List<Contact> contacts;                      All in one file,
•}                                                     faster to write

                                 •ContactInstance.xml:
                                 •
                                 •<?xml version="1.0"?>
    Xml Annotations pro:         •<class>
                                 • <fields>
  Use of separate files so the   •    <field name="contacts">
  Java sources remain clean      •      <aspects>
                                 •        <view render="table"/>
                                 •      </aspects>
                                 •    </field>
                                 • </fields>
                                 •</class> 11
Auto rendering: POJO instead
                  of GUI components
•public class User {
• private String name;
• private String surname;
• private City   city;
• private String web;
•
• @ViewField(render=”textarea”)
• private String notes;
•
• public void ok(){...}
• public void cancel(){...}
• public void print(){...}
•}
                     12
Auto rendering: POJO → Form




          13
Binding POJO ↔ Form




   14
Composite Forms
      •To build complex forms you need to composite
                   POJOs all together
•ContactInstance.java:
•
•public class ContactForm {
• @ViewField(render = “objectembedded”, label=”Personal Information”)
• private Contact me;
•
• @ViewField(render = “tab”)
• private Contact[] colleagues = new Contact[]{
•                                  new Contact(“Joy”,“Miner”),
•                                  new Contact(“Tim”, “King”) };
•
• @ViewField(style = “{width: 400px;}”)
• private String description;
•
• public void sendEmail(){
•   ...
• }
•}
                                   15
Extension by composition I
     Classic Inheritance                Extension by Composition

                                         ComposedEntityInstance
           Employee
                                             <Employee>




        EmployeeFilter                          EmployeeFilter


Doesn't work very well with some        All Employee fields and actions
frameworks such as JDO and              are merged with Employee ones.
Hibernate: you need to use the          You can override fields, actions
class declared in the ORMapping         and events just redefine it in the
tool and not its extension.             EmployeeFilter class. The object
                                        contained is in the field called
                                        “entity”.
                                   16
Extension by composition II




           17
Getting started!
Connect to http://www.romaframework.org

         Download latest version

         Download the Handbook

         Start with the first tutorial

   Ask to the forum or the online support

                   Enjoy!
                        18
Demo pleeeease!




 19

Contenu connexe

Tendances (19)

EJB3 Advance Features
EJB3 Advance FeaturesEJB3 Advance Features
EJB3 Advance Features
 
Ejb3 Presentation
Ejb3 PresentationEjb3 Presentation
Ejb3 Presentation
 
C# .NET Developer Portfolio
C# .NET Developer PortfolioC# .NET Developer Portfolio
C# .NET Developer Portfolio
 
Jdbc Lecture5
Jdbc Lecture5Jdbc Lecture5
Jdbc Lecture5
 
Spring Framework-II
Spring Framework-IISpring Framework-II
Spring Framework-II
 
Enterprise Java Beans 3 - Business Logic
Enterprise Java Beans 3 - Business LogicEnterprise Java Beans 3 - Business Logic
Enterprise Java Beans 3 - Business Logic
 
Spring & hibernate
Spring & hibernateSpring & hibernate
Spring & hibernate
 
Hibernate 18052012
Hibernate 18052012Hibernate 18052012
Hibernate 18052012
 
Mike Taulty MIX10 Silverlight 4 Patterns Frameworks
Mike Taulty MIX10 Silverlight 4 Patterns FrameworksMike Taulty MIX10 Silverlight 4 Patterns Frameworks
Mike Taulty MIX10 Silverlight 4 Patterns Frameworks
 
Hibernate II
Hibernate IIHibernate II
Hibernate II
 
Skillwise EJB3.0 training
Skillwise EJB3.0 trainingSkillwise EJB3.0 training
Skillwise EJB3.0 training
 
Unit 06: The Web Application Extension for UML
Unit 06: The Web Application Extension for UMLUnit 06: The Web Application Extension for UML
Unit 06: The Web Application Extension for UML
 
Spring 2
Spring 2Spring 2
Spring 2
 
Java bean
Java beanJava bean
Java bean
 
TY.BSc.IT Java QB U5&6
TY.BSc.IT Java QB U5&6TY.BSc.IT Java QB U5&6
TY.BSc.IT Java QB U5&6
 
Enterprise Java Beans - EJB
Enterprise Java Beans - EJBEnterprise Java Beans - EJB
Enterprise Java Beans - EJB
 
Java EE and Glassfish
Java EE and GlassfishJava EE and Glassfish
Java EE and Glassfish
 
Jsf Framework
Jsf FrameworkJsf Framework
Jsf Framework
 
Struts 2 - Introduction
Struts 2 - Introduction Struts 2 - Introduction
Struts 2 - Introduction
 

Similaire à Roma introduction and concepts

Django è pronto per l'Enterprise
Django è pronto per l'EnterpriseDjango è pronto per l'Enterprise
Django è pronto per l'EnterprisePyCon Italia
 
Hibernate interview questions
Hibernate interview questionsHibernate interview questions
Hibernate interview questionsvenkata52
 
Hibernate basics
Hibernate basicsHibernate basics
Hibernate basicsAathikaJava
 
Java Hibernate Basics
Java Hibernate BasicsJava Hibernate Basics
Java Hibernate BasicsDeeptiJava
 
Framework Engineering
Framework EngineeringFramework Engineering
Framework EngineeringYoungSu Son
 
Model Driven Architecture (MDA): Motivations, Status & Future
Model Driven Architecture (MDA): Motivations, Status & FutureModel Driven Architecture (MDA): Motivations, Status & Future
Model Driven Architecture (MDA): Motivations, Status & Futureelliando dias
 
SnapLogic corporate presentation
SnapLogic corporate presentationSnapLogic corporate presentation
SnapLogic corporate presentationpbridges
 
Hibernate Interview Questions
Hibernate Interview QuestionsHibernate Interview Questions
Hibernate Interview QuestionsSyed Shahul
 
Hibernate reference1
Hibernate reference1Hibernate reference1
Hibernate reference1chandra mouli
 
Session 1 Tp1
Session 1 Tp1Session 1 Tp1
Session 1 Tp1phanleson
 
04.egovFrame Runtime Environment Workshop
04.egovFrame Runtime Environment Workshop04.egovFrame Runtime Environment Workshop
04.egovFrame Runtime Environment WorkshopChuong Nguyen
 
The Java Content Repository
The Java Content RepositoryThe Java Content Repository
The Java Content Repositorynobby
 
Accessing Your Existing SAP NetWeaver Portal on Mobile Device
Accessing Your Existing SAP NetWeaver Portal on Mobile DeviceAccessing Your Existing SAP NetWeaver Portal on Mobile Device
Accessing Your Existing SAP NetWeaver Portal on Mobile DeviceSAP Portal
 
Client Object Model - SharePoint Extreme 2012
Client Object Model - SharePoint Extreme 2012Client Object Model - SharePoint Extreme 2012
Client Object Model - SharePoint Extreme 2012daniel plocker
 

Similaire à Roma introduction and concepts (20)

Django è pronto per l'Enterprise
Django è pronto per l'EnterpriseDjango è pronto per l'Enterprise
Django è pronto per l'Enterprise
 
.Net template solution architecture
.Net template solution architecture.Net template solution architecture
.Net template solution architecture
 
IT Governance Portals
IT Governance   PortalsIT Governance   Portals
IT Governance Portals
 
Hibernate interview questions
Hibernate interview questionsHibernate interview questions
Hibernate interview questions
 
Hibernate basics
Hibernate basicsHibernate basics
Hibernate basics
 
Java Hibernate Basics
Java Hibernate BasicsJava Hibernate Basics
Java Hibernate Basics
 
Framework Engineering
Framework EngineeringFramework Engineering
Framework Engineering
 
Model Driven Architecture (MDA): Motivations, Status & Future
Model Driven Architecture (MDA): Motivations, Status & FutureModel Driven Architecture (MDA): Motivations, Status & Future
Model Driven Architecture (MDA): Motivations, Status & Future
 
Spring
SpringSpring
Spring
 
SnapLogic corporate presentation
SnapLogic corporate presentationSnapLogic corporate presentation
SnapLogic corporate presentation
 
Hibernate Interview Questions
Hibernate Interview QuestionsHibernate Interview Questions
Hibernate Interview Questions
 
Hibernate reference1
Hibernate reference1Hibernate reference1
Hibernate reference1
 
Session 1 Tp1
Session 1 Tp1Session 1 Tp1
Session 1 Tp1
 
04.egovFrame Runtime Environment Workshop
04.egovFrame Runtime Environment Workshop04.egovFrame Runtime Environment Workshop
04.egovFrame Runtime Environment Workshop
 
The Java Content Repository
The Java Content RepositoryThe Java Content Repository
The Java Content Repository
 
40020
4002040020
40020
 
40020
4002040020
40020
 
Tu1 1 5l
Tu1 1 5lTu1 1 5l
Tu1 1 5l
 
Accessing Your Existing SAP NetWeaver Portal on Mobile Device
Accessing Your Existing SAP NetWeaver Portal on Mobile DeviceAccessing Your Existing SAP NetWeaver Portal on Mobile Device
Accessing Your Existing SAP NetWeaver Portal on Mobile Device
 
Client Object Model - SharePoint Extreme 2012
Client Object Model - SharePoint Extreme 2012Client Object Model - SharePoint Extreme 2012
Client Object Model - SharePoint Extreme 2012
 

Plus de Luca Garulli

Scale Out Your Graph Across Servers and Clouds with OrientDB
Scale Out Your Graph Across Servers and Clouds  with OrientDBScale Out Your Graph Across Servers and Clouds  with OrientDB
Scale Out Your Graph Across Servers and Clouds with OrientDBLuca Garulli
 
Polyglot Persistence vs Multi-Model Databases
Polyglot Persistence vs Multi-Model DatabasesPolyglot Persistence vs Multi-Model Databases
Polyglot Persistence vs Multi-Model DatabasesLuca Garulli
 
How Graph Databases started the Multi Model revolution
How Graph Databases started the Multi Model revolutionHow Graph Databases started the Multi Model revolution
How Graph Databases started the Multi Model revolutionLuca Garulli
 
OrientDB and Hazelcast
OrientDB and HazelcastOrientDB and Hazelcast
OrientDB and HazelcastLuca Garulli
 
Why relationships are cool but join sucks - Big Data & Graphs in Rome
Why relationships are cool but join sucks - Big Data & Graphs in RomeWhy relationships are cool but join sucks - Big Data & Graphs in Rome
Why relationships are cool but join sucks - Big Data & Graphs in RomeLuca Garulli
 
Why relationships are cool but "join" sucks
Why relationships are cool but "join" sucksWhy relationships are cool but "join" sucks
Why relationships are cool but "join" sucksLuca Garulli
 
Soffri di patologie da "domini complessi con tante relazioni"? C'è una nuova ...
Soffri di patologie da "domini complessi con tante relazioni"? C'è una nuova ...Soffri di patologie da "domini complessi con tante relazioni"? C'è una nuova ...
Soffri di patologie da "domini complessi con tante relazioni"? C'è una nuova ...Luca Garulli
 
Switching from Relational 2 Graph - CloudConf.it
Switching from Relational 2 Graph - CloudConf.itSwitching from Relational 2 Graph - CloudConf.it
Switching from Relational 2 Graph - CloudConf.itLuca Garulli
 
Switching from Relational to the Graph model v1.3
Switching from Relational to the Graph model v1.3Switching from Relational to the Graph model v1.3
Switching from Relational to the Graph model v1.3Luca Garulli
 
Switching from relational to the graph model
Switching from relational to the graph modelSwitching from relational to the graph model
Switching from relational to the graph modelLuca Garulli
 
Internet Apps powered by NoSQL and JavaScript
Internet Apps powered by NoSQL and JavaScriptInternet Apps powered by NoSQL and JavaScript
Internet Apps powered by NoSQL and JavaScriptLuca Garulli
 
Switching from the Relational to the Graph model
Switching from the Relational to the Graph modelSwitching from the Relational to the Graph model
Switching from the Relational to the Graph modelLuca Garulli
 
OrientDB document or graph? Select the right model (old presentation)
OrientDB document or graph? Select the right model (old presentation)OrientDB document or graph? Select the right model (old presentation)
OrientDB document or graph? Select the right model (old presentation)Luca Garulli
 
Design your application using Persistent Graphs and OrientDB
Design your application using Persistent Graphs and OrientDBDesign your application using Persistent Graphs and OrientDB
Design your application using Persistent Graphs and OrientDBLuca Garulli
 
No sql matters_2012_keynote
No sql matters_2012_keynoteNo sql matters_2012_keynote
No sql matters_2012_keynoteLuca Garulli
 
OrientDB distributed architecture 1.1
OrientDB distributed architecture 1.1OrientDB distributed architecture 1.1
OrientDB distributed architecture 1.1Luca Garulli
 
OrientDB for real & Web App development
OrientDB for real & Web App developmentOrientDB for real & Web App development
OrientDB for real & Web App developmentLuca Garulli
 
OrientDB the database for the web 1.1
OrientDB the database for the web 1.1OrientDB the database for the web 1.1
OrientDB the database for the web 1.1Luca Garulli
 
OrientDB introduction - NoSQL
OrientDB introduction - NoSQLOrientDB introduction - NoSQL
OrientDB introduction - NoSQLLuca Garulli
 
RomaFramework Tutorial Basics
RomaFramework Tutorial BasicsRomaFramework Tutorial Basics
RomaFramework Tutorial BasicsLuca Garulli
 

Plus de Luca Garulli (20)

Scale Out Your Graph Across Servers and Clouds with OrientDB
Scale Out Your Graph Across Servers and Clouds  with OrientDBScale Out Your Graph Across Servers and Clouds  with OrientDB
Scale Out Your Graph Across Servers and Clouds with OrientDB
 
Polyglot Persistence vs Multi-Model Databases
Polyglot Persistence vs Multi-Model DatabasesPolyglot Persistence vs Multi-Model Databases
Polyglot Persistence vs Multi-Model Databases
 
How Graph Databases started the Multi Model revolution
How Graph Databases started the Multi Model revolutionHow Graph Databases started the Multi Model revolution
How Graph Databases started the Multi Model revolution
 
OrientDB and Hazelcast
OrientDB and HazelcastOrientDB and Hazelcast
OrientDB and Hazelcast
 
Why relationships are cool but join sucks - Big Data & Graphs in Rome
Why relationships are cool but join sucks - Big Data & Graphs in RomeWhy relationships are cool but join sucks - Big Data & Graphs in Rome
Why relationships are cool but join sucks - Big Data & Graphs in Rome
 
Why relationships are cool but "join" sucks
Why relationships are cool but "join" sucksWhy relationships are cool but "join" sucks
Why relationships are cool but "join" sucks
 
Soffri di patologie da "domini complessi con tante relazioni"? C'è una nuova ...
Soffri di patologie da "domini complessi con tante relazioni"? C'è una nuova ...Soffri di patologie da "domini complessi con tante relazioni"? C'è una nuova ...
Soffri di patologie da "domini complessi con tante relazioni"? C'è una nuova ...
 
Switching from Relational 2 Graph - CloudConf.it
Switching from Relational 2 Graph - CloudConf.itSwitching from Relational 2 Graph - CloudConf.it
Switching from Relational 2 Graph - CloudConf.it
 
Switching from Relational to the Graph model v1.3
Switching from Relational to the Graph model v1.3Switching from Relational to the Graph model v1.3
Switching from Relational to the Graph model v1.3
 
Switching from relational to the graph model
Switching from relational to the graph modelSwitching from relational to the graph model
Switching from relational to the graph model
 
Internet Apps powered by NoSQL and JavaScript
Internet Apps powered by NoSQL and JavaScriptInternet Apps powered by NoSQL and JavaScript
Internet Apps powered by NoSQL and JavaScript
 
Switching from the Relational to the Graph model
Switching from the Relational to the Graph modelSwitching from the Relational to the Graph model
Switching from the Relational to the Graph model
 
OrientDB document or graph? Select the right model (old presentation)
OrientDB document or graph? Select the right model (old presentation)OrientDB document or graph? Select the right model (old presentation)
OrientDB document or graph? Select the right model (old presentation)
 
Design your application using Persistent Graphs and OrientDB
Design your application using Persistent Graphs and OrientDBDesign your application using Persistent Graphs and OrientDB
Design your application using Persistent Graphs and OrientDB
 
No sql matters_2012_keynote
No sql matters_2012_keynoteNo sql matters_2012_keynote
No sql matters_2012_keynote
 
OrientDB distributed architecture 1.1
OrientDB distributed architecture 1.1OrientDB distributed architecture 1.1
OrientDB distributed architecture 1.1
 
OrientDB for real & Web App development
OrientDB for real & Web App developmentOrientDB for real & Web App development
OrientDB for real & Web App development
 
OrientDB the database for the web 1.1
OrientDB the database for the web 1.1OrientDB the database for the web 1.1
OrientDB the database for the web 1.1
 
OrientDB introduction - NoSQL
OrientDB introduction - NoSQLOrientDB introduction - NoSQL
OrientDB introduction - NoSQL
 
RomaFramework Tutorial Basics
RomaFramework Tutorial BasicsRomaFramework Tutorial Basics
RomaFramework Tutorial Basics
 

Dernier

Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
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
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 

Dernier (20)

Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
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
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 

Roma introduction and concepts

  • 1. JL-1 Roma <Meta> Framework Introduction and main concepts Luca Garulli CTO@AssetData.it CTO at AssetData, Technical Manager at Romulus consortium, Author of http://zion-city.blogspot.com Roma Framework and OrientDB Open http://twitter.com/lgarulli Source projects
  • 2. Development Scenario I Choose the right framework between hundreds Each framework is proprietary, so migration is too much difficult, or sometimes impossible Learning curve often is steep and requires a lot of time to learn before to understand if it's the right one for us 2
  • 3. Development Scenario II What happens if you discover that the tool or the framework you choose doesn’t support some features we need or that the best choice was another one? Changing it’s too costly, sometime “impossible” 3
  • 4. Do you need a <meta> framework? Set of behavior interfaces instead of framework APIs directly. The aim is to cover the 80-90% of the most common use cases. For the uncovered 10- 20% you can use the framework implementation directly Migration to another supported framework without change the code 4
  • 5. Domain centric view Echo2 Janiculum Modules can implement JDO Java Resource aspects of the JPA View Bundle meta-framework Internatio Persistence (repository) nalization (I18N) CRUD Domain model Login Custom, Http Authentication and Session LDAP business Portlet User & Profile logic Jetty Workflow Others Monitoring Tevere Aspects define the interfaces JMX (behaviour) of the meta-framework 5
  • 6. Aspects Authentication •Scheduler •Flow •Security •Enterprise •Semantic •Hook •Serialization •I18n (internationalization) •Service •Logging •Session •Monitoring •Validation •Persistence •View •Registry •Workflow •Reporting 6
  • 7. POJO is the answer for all •POJO • • •(Plain Old Java Object) 7
  • 8. Everything is a POJO •The application model is composed by POJOs • •The domain entities synchronized with the database are POJOs The Business Logic is written in POJOs • •The Web Services are POJOs • •Guess the Web pages? 8
  • 9. Enriched Meta Model I •Roma auto discovers all the model of your •application and generate: • •Forms, •Database tables •OR-mapping configuration, •Web services, •and much more! 9
  • 10. Enriched Meta Model II •But Java as language is not enough to express a complete model. What means this? • •private List<Contact> contacts; • •Is it a relationship? 1-N or N-M? If yes it's embedded or not? • •How can I render it in my Web Page? •A List, a Table or a Select field? 10
  • 11. Enriched Meta Model III •We need a way to enrich the meta-model using Java5+ Annotations or Xml Annotations •ContactInstance.java: • •public class ContactInstance{ • @ViewField(render = ViewConstants.RENDER_TABLE) Java5+ Annotations pro: • private List<Contact> contacts; All in one file, •} faster to write •ContactInstance.xml: • •<?xml version="1.0"?> Xml Annotations pro: •<class> • <fields> Use of separate files so the • <field name="contacts"> Java sources remain clean • <aspects> • <view render="table"/> • </aspects> • </field> • </fields> •</class> 11
  • 12. Auto rendering: POJO instead of GUI components •public class User { • private String name; • private String surname; • private City city; • private String web; • • @ViewField(render=”textarea”) • private String notes; • • public void ok(){...} • public void cancel(){...} • public void print(){...} •} 12
  • 13. Auto rendering: POJO → Form 13
  • 14. Binding POJO ↔ Form 14
  • 15. Composite Forms •To build complex forms you need to composite POJOs all together •ContactInstance.java: • •public class ContactForm { • @ViewField(render = “objectembedded”, label=”Personal Information”) • private Contact me; • • @ViewField(render = “tab”) • private Contact[] colleagues = new Contact[]{ • new Contact(“Joy”,“Miner”), • new Contact(“Tim”, “King”) }; • • @ViewField(style = “{width: 400px;}”) • private String description; • • public void sendEmail(){ • ... • } •} 15
  • 16. Extension by composition I Classic Inheritance Extension by Composition ComposedEntityInstance Employee <Employee> EmployeeFilter EmployeeFilter Doesn't work very well with some All Employee fields and actions frameworks such as JDO and are merged with Employee ones. Hibernate: you need to use the You can override fields, actions class declared in the ORMapping and events just redefine it in the tool and not its extension. EmployeeFilter class. The object contained is in the field called “entity”. 16
  • 18. Getting started! Connect to http://www.romaframework.org Download latest version Download the Handbook Start with the first tutorial Ask to the forum or the online support Enjoy! 18