SlideShare uma empresa Scribd logo
1 de 37
Baixar para ler offline
Smalltalk in Enterprise Applications
ESUG Conference 2010
Barcelona
About

  NovaTec GmbH
      German software consulting company
      Offering full IT services for complex business applications
      Software engineering, enterprise architectures, integrated system life cycle management,
      development processes and enterprise application integration
  Offices in Stuttgart (Leinfelden-Echterdingen), Munich and Frankfurt
  About 120 employees, quickly growing


  Andreas Tönne
      Managing consultant at NovaTec GmbH, based in Frankfurt
      Responsible for developing the Smalltalk business area
      Working mainly with Smalltalk for 23 years
      Previously: Lead Consultant Europe at Cincom, vice-president at Georg Heeg



© NovaTec                                          01.01.2010                                    2
Finding a home for Smalltalk in Enterprise Architectures




© NovaTec                 01.01.2010                   3
Where to Place Smalltalk in the Enterprise (TOGAF)

                                                                      Business models




                                                       • individual
                                          • business
                             • specific
                                                                      Business unit (organization)
       • Business                                                     Business process - Processlandscapes
      • Architecture                                                  Business data




       • Business
       • IT
                                                                      Applicationlandscape
       • Information                                                  Individual application definition
        • Systems                                                     Services / use-cases
                                                                      Interfaces
      • Architecture
                                                                      Data
  •    (Applications/Data)
                                                                      User
                                          technology




                                                                      Application platform
                                                       standards




                                                                      Middleware (application server, MoM, DBMS)
                             generic




      • Technology
      • Architecture                                                  Operatingsystem

                                                                      Hardware / network


© NovaTec                                                                   01.01.2010                             4
Let us turn back the clock by 15 years




© NovaTec                    01.01.2010              5
Classes in 1995




                  Smalltalk was mature already


             Java fought for reasons to exist




© NovaTec                     01.01.2010         6
Classes in 2010


            Java is the biggest player in enterprise
                    application development



  And Smalltalk?
  … is not known in the enterprise



© NovaTec                     01.01.2010               7
What happened?




© NovaTec         01.01.2010   8
Wake Up!




            This is a wake-up call!




© NovaTec            01.01.2010       9
What to Do?


             JEE/EJB is here to stay for a long time


            Put Smalltalk into action in a JEE-centric
                    application architecture

      Make a Smalltalk system a first-class citizen of JEE
        ? What needs to be changed in Smalltalk
        ? What needs to be added to integrate with JEE




© NovaTec                                        01.01.2010   10
You Are Good, We Are Good!


            Smalltalk is good                                      Java EE is good
    At the language level                                   At the architecture level

      Less syntax                                               Less frameworks to write yourself
      Less boilerplate code for a language-level                Less boilerplate code for server
      task                                                      infrastructure tasks




© NovaTec                                          01.01.2010                                       11
JEE is not as complex as it used to be




        Do you believe that Java EE / EJB applications are


      Awful to write?
      Complex with lots of technical details?




© NovaTec                           01.01.2010               12
Hello World – JEE 6 / EJB 3 Style


      Write server component
  1. package org.acme;
     @Stateless
     @Remote
     public class HelloBean {
        public String sayHello() {
                 return "Hello World!";
        }
     }
  2. Compile and package
  3. Deploy




© NovaTec                                 01.01.2010   13
Hello World – JEE 6 / EJB 3 Style cont.


      Write remote client application
  4. package org.acme;
     public class HelloClient {
         @EJB HelloBean remoteBean;
        public static void main(String[] args) throws Exception {
                 System.out.println(remoteBean.sayHello());
        }
     }
  5. Compile
  6. Run




© NovaTec                               01.01.2010                  14
You Are Good, We Are Good! cont.

      EJB server gave us instant and free
        1. Scalability and robustness for thousands of users
        2. Distributed server architecture
        3. Standard persistence and distributed transactional control
        4. Separation of client and remote business logic in components
        5. Complete component life-cycle management


      Standard set of frameworks
        •   Supported by implementations from various vendors
        •   Very portable across vendor implementations



                                             I like this!

© NovaTec                                        01.01.2010               15
Why did this not become the instant role model
               for Smalltalk on the server?


                   Java took its time




© NovaTec                 01.01.2010                  16
Java Timeline

      1995 – Java introduced to the public
      1996 – JDK 1.0 released, NovaTec founded
      1997 – JavaOne conference attracted 8.000 attendees, JDK 1.1, EJB 1.0
      1999 – Java 2, J2EE goes beta, JavaOne has 20.000 attendees
      2001 – JEE SDK has 1 mil. downloads
      2002 – 2 mil. downloads
      2003 – Java runs on 550 mil. desktops, Eclipse released
      2004 – Java EE5 released
      2005 – 10 years old, 4.5 mil. developers worldwide
      2006 – current Java SE6 released with 21 updates, Java 7 coming this year
      2009 – current Java EE6 released


  Java showed the most impressive and successful run in computing history ever


© NovaTec                                       01.01.2010                        17
What Did the Java Community Learn?

      POJO: Separate the business logic from the infrastructure
        •   Remove dependency on technical superclasses and framework required code
      Bean: A lightweight component model that works
        •   Supports abstract encapsulation, implementation independence, portability
        •   Allows tools and frameworks of independent vendors
      Dependency Injection: Declarative composition of objects removes need for "plumbing"
        •   Separation of concerns – business developer vs. framework supplier
      Annotation: Meta-programming reduces complexity and framework skills needs
        •   Avoid cross-cutting concerns
        •   Support POJOs
      Container: Externally supplied bean life-cycle and infrastructure is good




© NovaTec                                        01.01.2010                                  18
Container


        Container: Operating system for running (enterprise) beans
            Different types of containers for different kinds of beans

      Key benefits:
        •   Separate the business logic from the server infrastructure
        •   Make the business logic independent of server vendor implementation
        •   Framework and tool-supported component life-cycle, logging, transactions, …




© NovaTec                                         01.01.2010                              19
EJB Container-Architecture of JEE




© NovaTec                           01.01.2010   20
Dependency Injection and Annotations

  Pluggable business components, resources and infrastructure objects
         •    Declaratively by annotations or XML files
         •    Container builds the beans


  @Stateless
  @Remote
  public class EmployeeDemoSessionBean {
      @PersistenceContext EntityManager entityManager;
      public Employee createEmployee(String firstName, String lastName) {
              Employee employee = new Employee();
              employee.setFirstName(firstName);
              employee.setLastName(lastName);
              entityManager.persist(employee);
              return employee;
      } ...
  }
© NovaTec                                           01.01.2010              21
And Smalltalk in the Enterprise?




       Smalltalk in the enterprise spells: Do It Yourself!

      No standard component model
      Very little declarativeness and meta-programming in applications
      No abstract standard for application infrastructure
      Every project has to implement its own server infrastructure architecture




© NovaTec                                         01.01.2010                      22
Do It Yourself – One Example

      Thread-Pooling
        •   http://onsmalltalk.com/2010-07-28-a-simple-thread-pool-for-smalltalk (Ramon Leon)
        •   „So, let's write a thread pool.“
        •   James Robertson reply about BottomFeeder „What I should have done is what Ramon did
            - write a more general solution instead of burying it inside an app. „
      It seems it it too simple to write necessary infrastructure ad-hoc


  Not everyone is able to write a good thread-pooling framework for high loads




© NovaTec                                         01.01.2010                                    23
Why Smalltalk in the Enterprise? Why Bother?


             Complex business concept modelling


                     Rapid domain changes


                  Translating between domains

     And there is a lot of valuable legacy Smalltalk code…
            Under pressure to integrate in JEE or go away
© NovaTec                         01.01.2010                 24
Smalltalk Enterprise Edition 1.0


  Do not try to reinvent or replace the JEE server!


  Model architecture and infrastructure abstractions of JEE


  Interface with JEE to make Smalltalk components first class citizens of JEE


  Turn Smalltalk into a "shadow container" of Smalltalk components




© NovaTec                                  01.01.2010                           25
Benefits of a Smalltalk Server Application Architecture


  Be part of the overall enterprise architecture and application design


  Improve the server qualities of Smalltalk


  Simplify the JEE-Smalltalk interface


  Attract standardized server development on a broader scale
        •   Make 3rd party tools and framework development more attractive




© NovaTec                                      01.01.2010                    26
Smalltalk Enterprise Edition 1.0 - TODO

      Introduce a component model
      Add more meta-programming using pragmas or similar
      Provide standard abstract frameworks for server tasks
      Abstract model of factories with dependency injection
      Abstract model of containers


      Bean-level interface between JEE and Smalltalk




© NovaTec                                       01.01.2010    27
Smalltalk EE – Architecture Sketch (Java calling ST)




© NovaTec                           01.01.2010         28
Which Smalltalk Components in Version 1.0?

      Session beans for threaded services
        •   Stateless for massively concurrent single tasks
        •   Stateful for workflow oriented tasks


      Smalltalk should export session beans


      Proxy Java Bean (generated) only interface to use a Smalltalk component
        •   Transactional control and security through this proxy


      JCA (Java Connector Architecture) option for further transactional and security integration


      Persistence is a topic for V1.1




© NovaTec                                          01.01.2010                                       29
Which Components - Sketch

      Smart defaults, optional types for remoted properties and
      services
      Standard life-cycle callbacks available


  <bean: 'HelloWorld' stateful: true remote: true local: true>
  Smalltalk defineClass: #HelloWorldBean         name
      superclass: #{Core.Object}                   <propertyType: #string>
                                                   ^name
      indexedType: #none
      private: false                             name: aString
      instanceVariableNames: 'name '               name := aString
      classInstanceVariableNames: ''
                                                 sayHello
      imports: ''                                  <serviceParameterTypes: #() returnType: #string)>
      category: ''                                 ^'Hello World to ', self name



© NovaTec                                         01.01.2010                                      30
Which Containers?

      Container = Factory + Maintenance of bean per bean kind
      Consistently based on
        •   Dependency injection for bean construction
        •   Meta-programming controlled through pragmas or deployment descriptors
      Creation of bean instances through a lookup mechanism
      Referencing and finding bean
      Handling the general life-cycle


      Concrete containers may come in a wide variety
        •   Pooling
        •   Threaded
        •   Load limiting like persisting inactive components
        •   Bean instrumentation like logging or transactions



© NovaTec                                         01.01.2010                        31
Component Deployment Descriptors - Sketch

Smalltalk defineClass: #MockupContainer
              superclass: #{SEE.BeanContainer}
              ….
beanSetup
              <deploymentDescriptor: #SampleContainer>
              self bean: #HelloWorld with:
                            [:bean |

                                          bean implementor: HelloWorldBean.
                                          bean isStateful.
                                          bean isRemote.
                                          bean isLocal.
                                          bean property: #name with:
                                                                        [:prop |
                                                                        prop getter: #name.
                                                                        prop setter: #name:.
                                                                        prop type: SEE.Types.String].
                                          bean service: #sayHello with: [:svc | svc returnType: SEE.Types.String]]



© NovaTec                                                           01.01.2010                                       32
Which Container – Local Usage Sketch


context := LocalContainerContext for: #SampleContainer.
bean := context lookup: #HelloWorld.
bean name: 'Barcelona'.
Transcript show: bean sayHello; cr.




© NovaTec                                01.01.2010       33
Which Container – Local Usage Sketch cont.


greetESUG
            <inject: #HelloWorld into: #hello>
            | hello|
            hello name: 'Barcelona'.
            Transcript show: hello sayHello; cr


      No local context, no lookup
      Injected component changable in deployment descriptor




© NovaTec                                        01.01.2010   34
Interfacing with JEE - Principles

      Remoted Smalltalk component represented by local Java EJB
      Imported Java beans represented by local Smalltalk components
      Cross-container communication only through connector
      Clients talk to the EJB server, never to Smalltalk directly


      Smalltalk is a "shadow container" behind the EJB server




© NovaTec                                          01.01.2010         35
Interfacing with JEE - Options

      Using JNI to run EJB- and Smalltalk-VMs in the same process space
        •   JNIPort or JavaConnect via VMasDLL (VisualWorks)
        •   Starting the Java server from Smalltalk via DLLCC is NO OPTION
        •   Threading a serious issue
      Using web-services as the transport layer
        •   Possibly the simplest and slowest option
      Using a fast custom IIOP or someone please implement RMI


      Add JCA for more complete transaction and security integration




© NovaTec                                         01.01.2010                 36
Summary

      Java's success in the enterprise has created good progress in standard enterprise application
      server infrastructure
      Smalltalk is lacking a similar platform/vendor independent infrastructure
      This makes Smalltalk inacceptable for enterprise applications by common standards
      JEE improved through proper abstractions of technical infrastructure and by making good use
      of meta-programming
      Smalltalk should add a standardized server application architecture
      A JEE connector will allow Smalltalk to be used as a shadow container behind a EJB server


      Give existing Smalltalk applications a longer life
      Introduce new opportunities for Smalltalk projects as part of a JEE project




© NovaTec                                          01.01.2010                                         37

Mais conteúdo relacionado

Mais procurados

BPMN, BPEL, ESB or maybe Java? What should I use to implement my project?
BPMN, BPEL, ESB or maybe Java? What should I use to implement my project?BPMN, BPEL, ESB or maybe Java? What should I use to implement my project?
BPMN, BPEL, ESB or maybe Java? What should I use to implement my project?Guido Schmutz
 
Drupal Summit Presentation by Orchestra Team
Drupal Summit Presentation by Orchestra TeamDrupal Summit Presentation by Orchestra Team
Drupal Summit Presentation by Orchestra TeamOrchestra LLC
 
Are Clouds a Game Change? Business says Yes; IT says No!
Are Clouds a Game Change? Business says Yes; IT says No! Are Clouds a Game Change? Business says Yes; IT says No!
Are Clouds a Game Change? Business says Yes; IT says No! Capgemini
 
Interoperable Open Architecture through a Common Component Model
Interoperable Open Architecture through a Common Component ModelInteroperable Open Architecture through a Common Component Model
Interoperable Open Architecture through a Common Component ModelRemedy IT
 
Oracle enterprise architects day
Oracle enterprise architects dayOracle enterprise architects day
Oracle enterprise architects dayAyodele Peter Boglo
 
Virtual dev-day-java7-keynote-1641807
Virtual dev-day-java7-keynote-1641807Virtual dev-day-java7-keynote-1641807
Virtual dev-day-java7-keynote-1641807Vinay H G
 
S424. Soa Mainframe Practices Best And Worst
S424. Soa Mainframe Practices   Best And WorstS424. Soa Mainframe Practices   Best And Worst
S424. Soa Mainframe Practices Best And WorstMichaelErichsen
 
Java on zSystems zOS
Java on zSystems zOSJava on zSystems zOS
Java on zSystems zOSTim Ellison
 
Next-Generation Enterprise Application Development with SpringSource dm Serve...
Next-Generation Enterprise Application Development with SpringSource dm Serve...Next-Generation Enterprise Application Development with SpringSource dm Serve...
Next-Generation Enterprise Application Development with SpringSource dm Serve...Aditya Jha
 
Dom introduction-website-v1.0
Dom introduction-website-v1.0Dom introduction-website-v1.0
Dom introduction-website-v1.0Cogility
 
CV - Irwan Syahputra Harahap
CV - Irwan Syahputra HarahapCV - Irwan Syahputra Harahap
CV - Irwan Syahputra Harahapirwan syahputra
 
MagicLamp Resourcing Aug 2010
MagicLamp Resourcing Aug 2010MagicLamp Resourcing Aug 2010
MagicLamp Resourcing Aug 2010tdesbarres
 
Novell ZENworks Application Virtualization Advanced Administration
Novell ZENworks Application Virtualization Advanced AdministrationNovell ZENworks Application Virtualization Advanced Administration
Novell ZENworks Application Virtualization Advanced AdministrationNovell
 
Con11257 schifano con11257-best practices for deploying highly scalable virtu...
Con11257 schifano con11257-best practices for deploying highly scalable virtu...Con11257 schifano con11257-best practices for deploying highly scalable virtu...
Con11257 schifano con11257-best practices for deploying highly scalable virtu...Berry Clemens
 
Brain Cell IT - About our company
Brain Cell IT - About our companyBrain Cell IT - About our company
Brain Cell IT - About our companyBrain Cell IT
 
Siebel Mobile Solutions Overview
Siebel Mobile Solutions OverviewSiebel Mobile Solutions Overview
Siebel Mobile Solutions OverviewIlya Milshtein
 
Con8289 r12 maintenance tips heisler heisler-con8289
Con8289 r12 maintenance tips heisler heisler-con8289Con8289 r12 maintenance tips heisler heisler-con8289
Con8289 r12 maintenance tips heisler heisler-con8289Berry Clemens
 

Mais procurados (20)

BPMN, BPEL, ESB or maybe Java? What should I use to implement my project?
BPMN, BPEL, ESB or maybe Java? What should I use to implement my project?BPMN, BPEL, ESB or maybe Java? What should I use to implement my project?
BPMN, BPEL, ESB or maybe Java? What should I use to implement my project?
 
Drupal Summit Presentation by Orchestra Team
Drupal Summit Presentation by Orchestra TeamDrupal Summit Presentation by Orchestra Team
Drupal Summit Presentation by Orchestra Team
 
Are Clouds a Game Change? Business says Yes; IT says No!
Are Clouds a Game Change? Business says Yes; IT says No! Are Clouds a Game Change? Business says Yes; IT says No!
Are Clouds a Game Change? Business says Yes; IT says No!
 
Interoperable Open Architecture through a Common Component Model
Interoperable Open Architecture through a Common Component ModelInteroperable Open Architecture through a Common Component Model
Interoperable Open Architecture through a Common Component Model
 
Oracle enterprise architects day
Oracle enterprise architects dayOracle enterprise architects day
Oracle enterprise architects day
 
Virtual dev-day-java7-keynote-1641807
Virtual dev-day-java7-keynote-1641807Virtual dev-day-java7-keynote-1641807
Virtual dev-day-java7-keynote-1641807
 
S424. Soa Mainframe Practices Best And Worst
S424. Soa Mainframe Practices   Best And WorstS424. Soa Mainframe Practices   Best And Worst
S424. Soa Mainframe Practices Best And Worst
 
Java on zSystems zOS
Java on zSystems zOSJava on zSystems zOS
Java on zSystems zOS
 
Next-Generation Enterprise Application Development with SpringSource dm Serve...
Next-Generation Enterprise Application Development with SpringSource dm Serve...Next-Generation Enterprise Application Development with SpringSource dm Serve...
Next-Generation Enterprise Application Development with SpringSource dm Serve...
 
Company profile Metrasys
Company profile MetrasysCompany profile Metrasys
Company profile Metrasys
 
Dom introduction-website-v1.0
Dom introduction-website-v1.0Dom introduction-website-v1.0
Dom introduction-website-v1.0
 
WeWebU Migration 2 Alfresco
WeWebU Migration 2 AlfrescoWeWebU Migration 2 Alfresco
WeWebU Migration 2 Alfresco
 
Mohamed attia farag
Mohamed attia faragMohamed attia farag
Mohamed attia farag
 
CV - Irwan Syahputra Harahap
CV - Irwan Syahputra HarahapCV - Irwan Syahputra Harahap
CV - Irwan Syahputra Harahap
 
MagicLamp Resourcing Aug 2010
MagicLamp Resourcing Aug 2010MagicLamp Resourcing Aug 2010
MagicLamp Resourcing Aug 2010
 
Novell ZENworks Application Virtualization Advanced Administration
Novell ZENworks Application Virtualization Advanced AdministrationNovell ZENworks Application Virtualization Advanced Administration
Novell ZENworks Application Virtualization Advanced Administration
 
Con11257 schifano con11257-best practices for deploying highly scalable virtu...
Con11257 schifano con11257-best practices for deploying highly scalable virtu...Con11257 schifano con11257-best practices for deploying highly scalable virtu...
Con11257 schifano con11257-best practices for deploying highly scalable virtu...
 
Brain Cell IT - About our company
Brain Cell IT - About our companyBrain Cell IT - About our company
Brain Cell IT - About our company
 
Siebel Mobile Solutions Overview
Siebel Mobile Solutions OverviewSiebel Mobile Solutions Overview
Siebel Mobile Solutions Overview
 
Con8289 r12 maintenance tips heisler heisler-con8289
Con8289 r12 maintenance tips heisler heisler-con8289Con8289 r12 maintenance tips heisler heisler-con8289
Con8289 r12 maintenance tips heisler heisler-con8289
 

Destaque

Visualizing Dynamic Metrics with Profiling Blueprints
Visualizing Dynamic Metrics with Profiling BlueprintsVisualizing Dynamic Metrics with Profiling Blueprints
Visualizing Dynamic Metrics with Profiling BlueprintsESUG
 
F-Script
F-ScriptF-Script
F-ScriptESUG
 
Smartcard-Login into Gemstone
Smartcard-Login into GemstoneSmartcard-Login into Gemstone
Smartcard-Login into GemstoneESUG
 
Pharo
PharoPharo
PharoESUG
 
Seaside
SeasideSeaside
SeasideESUG
 
Building Ruby in Smalltalk
Building Ruby in SmalltalkBuilding Ruby in Smalltalk
Building Ruby in SmalltalkESUG
 
Internet application development using a meta-repository
Internet application development using a meta-repositoryInternet application development using a meta-repository
Internet application development using a meta-repositoryESUG
 

Destaque (7)

Visualizing Dynamic Metrics with Profiling Blueprints
Visualizing Dynamic Metrics with Profiling BlueprintsVisualizing Dynamic Metrics with Profiling Blueprints
Visualizing Dynamic Metrics with Profiling Blueprints
 
F-Script
F-ScriptF-Script
F-Script
 
Smartcard-Login into Gemstone
Smartcard-Login into GemstoneSmartcard-Login into Gemstone
Smartcard-Login into Gemstone
 
Pharo
PharoPharo
Pharo
 
Seaside
SeasideSeaside
Seaside
 
Building Ruby in Smalltalk
Building Ruby in SmalltalkBuilding Ruby in Smalltalk
Building Ruby in Smalltalk
 
Internet application development using a meta-repository
Internet application development using a meta-repositoryInternet application development using a meta-repository
Internet application development using a meta-repository
 

Semelhante a Smalltalk in Enterprise Applications

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
 
MicroProfile for MicroServices
MicroProfile for MicroServicesMicroProfile for MicroServices
MicroProfile for MicroServicesMert Çalışkan
 
토드(Toad) 신제품 및 크로스 플랫폼 전략(1)
토드(Toad) 신제품 및 크로스 플랫폼 전략(1)토드(Toad) 신제품 및 크로스 플랫폼 전략(1)
토드(Toad) 신제품 및 크로스 플랫폼 전략(1)mosaicnet
 
WS: Kohler, Logica - Running operations devops style
WS: Kohler, Logica - Running operations devops styleWS: Kohler, Logica - Running operations devops style
WS: Kohler, Logica - Running operations devops styleCloudOps Summit
 
The Nuxeo Way: leveraging open source to build a world-class ECM platform
The Nuxeo Way: leveraging open source to build a world-class ECM platformThe Nuxeo Way: leveraging open source to build a world-class ECM platform
The Nuxeo Way: leveraging open source to build a world-class ECM platformNuxeo
 
Java Micro Edition (ME) 8 Deep Dive
Java Micro Edition (ME) 8 Deep DiveJava Micro Edition (ME) 8 Deep Dive
Java Micro Edition (ME) 8 Deep Diveterrencebarr
 
2. oracle days sebastiaan vingerhoed_buckarest_november3rd
2. oracle days sebastiaan vingerhoed_buckarest_november3rd2. oracle days sebastiaan vingerhoed_buckarest_november3rd
2. oracle days sebastiaan vingerhoed_buckarest_november3rdDoina Draganescu
 
Cloud Computing - Making IT Simple
Cloud Computing - Making IT SimpleCloud Computing - Making IT Simple
Cloud Computing - Making IT SimpleBob Rhubart
 
Oracle Fusion Middleware - pragmatic approach to build up your applications -...
Oracle Fusion Middleware - pragmatic approach to build up your applications -...Oracle Fusion Middleware - pragmatic approach to build up your applications -...
Oracle Fusion Middleware - pragmatic approach to build up your applications -...ORACLE USER GROUP ESTONIA
 
EclipseConEurope2012 SOA - Talend with EasySOA
EclipseConEurope2012 SOA - Talend with EasySOAEclipseConEurope2012 SOA - Talend with EasySOA
EclipseConEurope2012 SOA - Talend with EasySOAMarc Dutoo
 
Tw Technology Radar Qtb Sep11
Tw Technology Radar Qtb Sep11Tw Technology Radar Qtb Sep11
Tw Technology Radar Qtb Sep11Adrian Treacy
 
Introduction to Java Micro Edition (ME) 8
Introduction to Java Micro Edition (ME) 8Introduction to Java Micro Edition (ME) 8
Introduction to Java Micro Edition (ME) 8terrencebarr
 

Semelhante a Smalltalk in Enterprise Applications (20)

Mohamed attia farag cv
Mohamed attia farag cv Mohamed attia farag cv
Mohamed attia farag cv
 
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
 
MicroProfile for MicroServices
MicroProfile for MicroServicesMicroProfile for MicroServices
MicroProfile for MicroServices
 
Saptalopa_Resume - Copy
Saptalopa_Resume - CopySaptalopa_Resume - Copy
Saptalopa_Resume - Copy
 
토드(Toad) 신제품 및 크로스 플랫폼 전략(1)
토드(Toad) 신제품 및 크로스 플랫폼 전략(1)토드(Toad) 신제품 및 크로스 플랫폼 전략(1)
토드(Toad) 신제품 및 크로스 플랫폼 전략(1)
 
WS: Kohler, Logica - Running operations devops style
WS: Kohler, Logica - Running operations devops styleWS: Kohler, Logica - Running operations devops style
WS: Kohler, Logica - Running operations devops style
 
Open Stack China Trip Sz0922
Open Stack China Trip Sz0922Open Stack China Trip Sz0922
Open Stack China Trip Sz0922
 
Logesh Kumaran M
Logesh Kumaran MLogesh Kumaran M
Logesh Kumaran M
 
The Nuxeo Way: leveraging open source to build a world-class ECM platform
The Nuxeo Way: leveraging open source to build a world-class ECM platformThe Nuxeo Way: leveraging open source to build a world-class ECM platform
The Nuxeo Way: leveraging open source to build a world-class ECM platform
 
Cloud Computing
Cloud ComputingCloud Computing
Cloud Computing
 
Java/J2EE Companion
Java/J2EE CompanionJava/J2EE Companion
Java/J2EE Companion
 
Java Micro Edition (ME) 8 Deep Dive
Java Micro Edition (ME) 8 Deep DiveJava Micro Edition (ME) 8 Deep Dive
Java Micro Edition (ME) 8 Deep Dive
 
2. oracle days sebastiaan vingerhoed_buckarest_november3rd
2. oracle days sebastiaan vingerhoed_buckarest_november3rd2. oracle days sebastiaan vingerhoed_buckarest_november3rd
2. oracle days sebastiaan vingerhoed_buckarest_november3rd
 
Cloud Computing - Making IT Simple
Cloud Computing - Making IT SimpleCloud Computing - Making IT Simple
Cloud Computing - Making IT Simple
 
Oracle Fusion Middleware - pragmatic approach to build up your applications -...
Oracle Fusion Middleware - pragmatic approach to build up your applications -...Oracle Fusion Middleware - pragmatic approach to build up your applications -...
Oracle Fusion Middleware - pragmatic approach to build up your applications -...
 
EclipseConEurope2012 SOA - Talend with EasySOA
EclipseConEurope2012 SOA - Talend with EasySOAEclipseConEurope2012 SOA - Talend with EasySOA
EclipseConEurope2012 SOA - Talend with EasySOA
 
KBACE Applied Identity Management
KBACE Applied Identity ManagementKBACE Applied Identity Management
KBACE Applied Identity Management
 
Resume_nakri
Resume_nakriResume_nakri
Resume_nakri
 
Tw Technology Radar Qtb Sep11
Tw Technology Radar Qtb Sep11Tw Technology Radar Qtb Sep11
Tw Technology Radar Qtb Sep11
 
Introduction to Java Micro Edition (ME) 8
Introduction to Java Micro Edition (ME) 8Introduction to Java Micro Edition (ME) 8
Introduction to Java Micro Edition (ME) 8
 

Mais de ESUG

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingESUG
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in PharoESUG
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapESUG
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoESUG
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...ESUG
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsESUG
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6ESUG
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationESUG
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingESUG
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesESUG
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportESUG
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsESUG
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector TuningESUG
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseESUG
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FutureESUG
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the DebuggerESUG
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing ScoreESUG
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptESUG
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocESUG
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsESUG
 

Mais de ESUG (20)

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in Pharo
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector Tuning
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing Score
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
 

Último

What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 

Último (20)

What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 

Smalltalk in Enterprise Applications

  • 1. Smalltalk in Enterprise Applications ESUG Conference 2010 Barcelona
  • 2. About NovaTec GmbH German software consulting company Offering full IT services for complex business applications Software engineering, enterprise architectures, integrated system life cycle management, development processes and enterprise application integration Offices in Stuttgart (Leinfelden-Echterdingen), Munich and Frankfurt About 120 employees, quickly growing Andreas Tönne Managing consultant at NovaTec GmbH, based in Frankfurt Responsible for developing the Smalltalk business area Working mainly with Smalltalk for 23 years Previously: Lead Consultant Europe at Cincom, vice-president at Georg Heeg © NovaTec 01.01.2010 2
  • 3. Finding a home for Smalltalk in Enterprise Architectures © NovaTec 01.01.2010 3
  • 4. Where to Place Smalltalk in the Enterprise (TOGAF) Business models • individual • business • specific Business unit (organization) • Business Business process - Processlandscapes • Architecture Business data • Business • IT Applicationlandscape • Information Individual application definition • Systems Services / use-cases Interfaces • Architecture Data • (Applications/Data) User technology Application platform standards Middleware (application server, MoM, DBMS) generic • Technology • Architecture Operatingsystem Hardware / network © NovaTec 01.01.2010 4
  • 5. Let us turn back the clock by 15 years © NovaTec 01.01.2010 5
  • 6. Classes in 1995 Smalltalk was mature already Java fought for reasons to exist © NovaTec 01.01.2010 6
  • 7. Classes in 2010 Java is the biggest player in enterprise application development And Smalltalk? … is not known in the enterprise © NovaTec 01.01.2010 7
  • 9. Wake Up! This is a wake-up call! © NovaTec 01.01.2010 9
  • 10. What to Do? JEE/EJB is here to stay for a long time Put Smalltalk into action in a JEE-centric application architecture Make a Smalltalk system a first-class citizen of JEE ? What needs to be changed in Smalltalk ? What needs to be added to integrate with JEE © NovaTec 01.01.2010 10
  • 11. You Are Good, We Are Good! Smalltalk is good Java EE is good At the language level At the architecture level Less syntax Less frameworks to write yourself Less boilerplate code for a language-level Less boilerplate code for server task infrastructure tasks © NovaTec 01.01.2010 11
  • 12. JEE is not as complex as it used to be Do you believe that Java EE / EJB applications are Awful to write? Complex with lots of technical details? © NovaTec 01.01.2010 12
  • 13. Hello World – JEE 6 / EJB 3 Style Write server component 1. package org.acme; @Stateless @Remote public class HelloBean { public String sayHello() { return "Hello World!"; } } 2. Compile and package 3. Deploy © NovaTec 01.01.2010 13
  • 14. Hello World – JEE 6 / EJB 3 Style cont. Write remote client application 4. package org.acme; public class HelloClient { @EJB HelloBean remoteBean; public static void main(String[] args) throws Exception { System.out.println(remoteBean.sayHello()); } } 5. Compile 6. Run © NovaTec 01.01.2010 14
  • 15. You Are Good, We Are Good! cont. EJB server gave us instant and free 1. Scalability and robustness for thousands of users 2. Distributed server architecture 3. Standard persistence and distributed transactional control 4. Separation of client and remote business logic in components 5. Complete component life-cycle management Standard set of frameworks • Supported by implementations from various vendors • Very portable across vendor implementations I like this! © NovaTec 01.01.2010 15
  • 16. Why did this not become the instant role model for Smalltalk on the server? Java took its time © NovaTec 01.01.2010 16
  • 17. Java Timeline 1995 – Java introduced to the public 1996 – JDK 1.0 released, NovaTec founded 1997 – JavaOne conference attracted 8.000 attendees, JDK 1.1, EJB 1.0 1999 – Java 2, J2EE goes beta, JavaOne has 20.000 attendees 2001 – JEE SDK has 1 mil. downloads 2002 – 2 mil. downloads 2003 – Java runs on 550 mil. desktops, Eclipse released 2004 – Java EE5 released 2005 – 10 years old, 4.5 mil. developers worldwide 2006 – current Java SE6 released with 21 updates, Java 7 coming this year 2009 – current Java EE6 released Java showed the most impressive and successful run in computing history ever © NovaTec 01.01.2010 17
  • 18. What Did the Java Community Learn? POJO: Separate the business logic from the infrastructure • Remove dependency on technical superclasses and framework required code Bean: A lightweight component model that works • Supports abstract encapsulation, implementation independence, portability • Allows tools and frameworks of independent vendors Dependency Injection: Declarative composition of objects removes need for "plumbing" • Separation of concerns – business developer vs. framework supplier Annotation: Meta-programming reduces complexity and framework skills needs • Avoid cross-cutting concerns • Support POJOs Container: Externally supplied bean life-cycle and infrastructure is good © NovaTec 01.01.2010 18
  • 19. Container Container: Operating system for running (enterprise) beans Different types of containers for different kinds of beans Key benefits: • Separate the business logic from the server infrastructure • Make the business logic independent of server vendor implementation • Framework and tool-supported component life-cycle, logging, transactions, … © NovaTec 01.01.2010 19
  • 20. EJB Container-Architecture of JEE © NovaTec 01.01.2010 20
  • 21. Dependency Injection and Annotations Pluggable business components, resources and infrastructure objects • Declaratively by annotations or XML files • Container builds the beans @Stateless @Remote public class EmployeeDemoSessionBean { @PersistenceContext EntityManager entityManager; public Employee createEmployee(String firstName, String lastName) { Employee employee = new Employee(); employee.setFirstName(firstName); employee.setLastName(lastName); entityManager.persist(employee); return employee; } ... } © NovaTec 01.01.2010 21
  • 22. And Smalltalk in the Enterprise? Smalltalk in the enterprise spells: Do It Yourself! No standard component model Very little declarativeness and meta-programming in applications No abstract standard for application infrastructure Every project has to implement its own server infrastructure architecture © NovaTec 01.01.2010 22
  • 23. Do It Yourself – One Example Thread-Pooling • http://onsmalltalk.com/2010-07-28-a-simple-thread-pool-for-smalltalk (Ramon Leon) • „So, let's write a thread pool.“ • James Robertson reply about BottomFeeder „What I should have done is what Ramon did - write a more general solution instead of burying it inside an app. „ It seems it it too simple to write necessary infrastructure ad-hoc Not everyone is able to write a good thread-pooling framework for high loads © NovaTec 01.01.2010 23
  • 24. Why Smalltalk in the Enterprise? Why Bother? Complex business concept modelling Rapid domain changes Translating between domains And there is a lot of valuable legacy Smalltalk code… Under pressure to integrate in JEE or go away © NovaTec 01.01.2010 24
  • 25. Smalltalk Enterprise Edition 1.0 Do not try to reinvent or replace the JEE server! Model architecture and infrastructure abstractions of JEE Interface with JEE to make Smalltalk components first class citizens of JEE Turn Smalltalk into a "shadow container" of Smalltalk components © NovaTec 01.01.2010 25
  • 26. Benefits of a Smalltalk Server Application Architecture Be part of the overall enterprise architecture and application design Improve the server qualities of Smalltalk Simplify the JEE-Smalltalk interface Attract standardized server development on a broader scale • Make 3rd party tools and framework development more attractive © NovaTec 01.01.2010 26
  • 27. Smalltalk Enterprise Edition 1.0 - TODO Introduce a component model Add more meta-programming using pragmas or similar Provide standard abstract frameworks for server tasks Abstract model of factories with dependency injection Abstract model of containers Bean-level interface between JEE and Smalltalk © NovaTec 01.01.2010 27
  • 28. Smalltalk EE – Architecture Sketch (Java calling ST) © NovaTec 01.01.2010 28
  • 29. Which Smalltalk Components in Version 1.0? Session beans for threaded services • Stateless for massively concurrent single tasks • Stateful for workflow oriented tasks Smalltalk should export session beans Proxy Java Bean (generated) only interface to use a Smalltalk component • Transactional control and security through this proxy JCA (Java Connector Architecture) option for further transactional and security integration Persistence is a topic for V1.1 © NovaTec 01.01.2010 29
  • 30. Which Components - Sketch Smart defaults, optional types for remoted properties and services Standard life-cycle callbacks available <bean: 'HelloWorld' stateful: true remote: true local: true> Smalltalk defineClass: #HelloWorldBean name superclass: #{Core.Object} <propertyType: #string> ^name indexedType: #none private: false name: aString instanceVariableNames: 'name ' name := aString classInstanceVariableNames: '' sayHello imports: '' <serviceParameterTypes: #() returnType: #string)> category: '' ^'Hello World to ', self name © NovaTec 01.01.2010 30
  • 31. Which Containers? Container = Factory + Maintenance of bean per bean kind Consistently based on • Dependency injection for bean construction • Meta-programming controlled through pragmas or deployment descriptors Creation of bean instances through a lookup mechanism Referencing and finding bean Handling the general life-cycle Concrete containers may come in a wide variety • Pooling • Threaded • Load limiting like persisting inactive components • Bean instrumentation like logging or transactions © NovaTec 01.01.2010 31
  • 32. Component Deployment Descriptors - Sketch Smalltalk defineClass: #MockupContainer superclass: #{SEE.BeanContainer} …. beanSetup <deploymentDescriptor: #SampleContainer> self bean: #HelloWorld with: [:bean | bean implementor: HelloWorldBean. bean isStateful. bean isRemote. bean isLocal. bean property: #name with: [:prop | prop getter: #name. prop setter: #name:. prop type: SEE.Types.String]. bean service: #sayHello with: [:svc | svc returnType: SEE.Types.String]] © NovaTec 01.01.2010 32
  • 33. Which Container – Local Usage Sketch context := LocalContainerContext for: #SampleContainer. bean := context lookup: #HelloWorld. bean name: 'Barcelona'. Transcript show: bean sayHello; cr. © NovaTec 01.01.2010 33
  • 34. Which Container – Local Usage Sketch cont. greetESUG <inject: #HelloWorld into: #hello> | hello| hello name: 'Barcelona'. Transcript show: hello sayHello; cr No local context, no lookup Injected component changable in deployment descriptor © NovaTec 01.01.2010 34
  • 35. Interfacing with JEE - Principles Remoted Smalltalk component represented by local Java EJB Imported Java beans represented by local Smalltalk components Cross-container communication only through connector Clients talk to the EJB server, never to Smalltalk directly Smalltalk is a "shadow container" behind the EJB server © NovaTec 01.01.2010 35
  • 36. Interfacing with JEE - Options Using JNI to run EJB- and Smalltalk-VMs in the same process space • JNIPort or JavaConnect via VMasDLL (VisualWorks) • Starting the Java server from Smalltalk via DLLCC is NO OPTION • Threading a serious issue Using web-services as the transport layer • Possibly the simplest and slowest option Using a fast custom IIOP or someone please implement RMI Add JCA for more complete transaction and security integration © NovaTec 01.01.2010 36
  • 37. Summary Java's success in the enterprise has created good progress in standard enterprise application server infrastructure Smalltalk is lacking a similar platform/vendor independent infrastructure This makes Smalltalk inacceptable for enterprise applications by common standards JEE improved through proper abstractions of technical infrastructure and by making good use of meta-programming Smalltalk should add a standardized server application architecture A JEE connector will allow Smalltalk to be used as a shadow container behind a EJB server Give existing Smalltalk applications a longer life Introduce new opportunities for Smalltalk projects as part of a JEE project © NovaTec 01.01.2010 37