Smalltalk in Enterprise Applications. ESUG Conference 2010 Barcelona



Similar documents
Case Studies of Running the Platform. NetBeans UML Servlet JSP GlassFish EJB

Module 13 Implementing Java EE Web Services with JAX-WS

Glassfish, JAVA EE, Servlets, JSP, EJB

JBS-102: Jboss Application Server Administration. Course Length: 4 days

White Paper: 1) Architecture Objectives: The primary objective of this architecture is to meet the. 2) Architecture Explanation

Oracle WebLogic Foundation of Oracle Fusion Middleware. Lawrence Manickam Toyork Systems Inc

OUR COURSES 19 November All prices are per person in Swedish Krona. Solid Beans AB Kungsgatan Göteborg Sweden

JBoss JEE5 with EJB3.0 on NonStop. JAVA SIG, San Jose

Contents. Client-server and multi-tier architectures. The Java 2 Enterprise Edition (J2EE) platform

Java EE 7: Back-End Server Application Development

How To Implement Lightweight ESOA with Java

25 May Code 3C3 Peeling the Layers of the 'Performance Onion John Murphy, Andrew Lee and Liam Murphy

How To Create A C++ Web Service

How to Build an E-Commerce Application using J2EE. Carol McDonald Code Camp Engineer

Beginning POJOs. From Novice to Professional. Brian Sam-Bodden

Java 2 Platform, Enterprise Edition (J2EE) Bruno Souza Java Technologist, Sun Microsystems, Inc.

What Is the Java TM 2 Platform, Enterprise Edition?

This presentation will provide a brief introduction to Rational Application Developer V7.5.

WebSphere Application Server - Introduction, Monitoring Tools, & Administration

Oracle WebLogic Server 11g Administration

CHAPTER 1 - JAVA EE OVERVIEW FOR ADMINISTRATORS

SOA REFERENCE ARCHITECTURE: WEB TIER

Service Oriented Architectures

Developing modular Java applications

Core J2EE Patterns, Frameworks and Micro Architectures

OpenShift is FanPaaStic For Java EE. By Shekhar Gulati Promo Code JUDCON.IN

Framework Adoption for Java Enterprise Application Development

Running and Testing Java EE Applications in Embedded Mode with JupEEter Framework

zen Platform technical white paper

Client-Server Architecture & J2EE Platform Technologies Overview Ahmed K. Ezzat

EJB & J2EE. Component Technology with thanks to Jim Dowling. Components. Problems with Previous Paradigms. What EJB Accomplishes

ActiveVOS Server Architecture. March 2009

Building and Using Web Services With JDeveloper 11g

Java E-Commerce Martin Cooke,

IBM CICS Transaction Gateway for Multiplatforms, Version 7.0

DEPLOYMENT ARCHITECTURE FOR JAVA ENVIRONMENTS

Oracle EXAM - 1Z Oracle Weblogic Server 11g: System Administration I. Buy Full Product.

Learn Oracle WebLogic Server 12c Administration For Middleware Administrators

How To Write A Web Framework In Java

HPC Portal Development Platform with E-Business and HPC Portlets

How To Understand The Architecture Of Java 2Ee, J2Ee, And J2E (Java) In A Wordpress Blog Post

3-Tier Architecture. 3-Tier Architecture. Prepared By. Channu Kambalyal. Page 1 of 19

GlassFish Security. open source community experience distilled. security measures. Secure your GlassFish installation, Web applications,

GlassFish v3. Building an ex tensible modular Java EE application server. Jerome Dochez and Ludovic Champenois Sun Microsystems, Inc.

WebSphere Training Outline

Oracle Application Development Framework Overview

How To Compare The Cost Of Business Process Management (Bpm) To Open Source Software (Bmp)

The Enterprise Service Bus

Web Application Development for the SOA Age Thinking in XML

Web Services ( )

Modern Software Development Tools on OpenVMS

Service-Oriented Architecture and Software Engineering

Enterprise JavaBeans 3.1

Java Technology in the Design and Implementation of Web Applications

To Java SE 8, and Beyond (Plan B)

JMS 2.0: Support for Multi-tenancy

Designing an Enterprise Application Framework for Service-Oriented Architecture 1

Java EE 6 Ce qui vous attends

Reusing Existing * Java EE Applications from Oracle SOA Suite

FUSE-ESB4 An open-source OSGi based platform for EAI and SOA

Java 2 Platform, Enterprise Edition (J2EE): Enabling Technologies for EAI

Nexawebホワイトペーパー. Developing with Nexaweb ~ Nexaweb to Improve Development Productivity and Maintainability

Monitoring Pramati EJB Server

SSC - Web development Model-View-Controller for Java web application development

INTRODUCTION TO JAVA PROGRAMMING LANGUAGE

Introduction to WebSphere Process Server and WebSphere Enterprise Service Bus

EJB 3.0 and IIOP.NET. Table of contents. Stefan Jäger / stefanjaeger@bluewin.ch

OSGi Service Platform in Integrated Management Environments Telefonica I+D, DIT-UPM, Telvent. copyright 2004 by OSGi Alliance All rights reserved.

Web Application Architectures

SOA Fundamentals For Java Developers. Alexander Ulanov, System Architect Odessa, 30 September 2008

Features of The Grinder 3

Real World Java EE Patterns - Rethinking Best Practices. blog.adam-bien.com

Java EE Introduction, Content. Component Architecture: Why and How Java EE: Enterprise Java

Oracle Weblogic. Setup, Configuration, Tuning, and Considerations. Presented by: Michael Hogan Sr. Technical Consultant at Enkitec

Oracle WebLogic Server 11g: Administration Essentials

1z0-102 Q&A. DEMO Version

1 What Are Web Services?

Performance Comparison of Java Application Servers

1 What Are Web Services?

APAC WebLogic Suite Workshop Oracle Parcel Service Overview. Jeffrey West Application Grid Product Management

Software Development Kit

Introduction to programming

The leading platform for Model Driven Architecture (MDA) Content:

Converting Java EE Applications into OSGi Applications

SAP Web Application Server 6.30: Learning Map for Development Consultants

Enterprise Integration Architectures for the Financial Services and Insurance Industries

ARM-BASED PERFORMANCE MONITORING FOR THE ECLIPSE PLATFORM

The Service Revolution software engineering without programming languages

1Z Oracle Weblogic Server 11g: System Administration I. Version: Demo. Page <<1/7>>

<Insert Picture Here> Michael Hichwa VP Database Development Tools Stuttgart September 18, 2007 Hamburg September 20, 2007

Geronimo Quartz Plugins

Transcription:

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 2

Finding a home for Smalltalk in Enterprise Architectures 3

Where to Place Smalltalk in the Enterprise (TOGAF) Business Architecture Business IT Information Systems Architecture (Applications/Data) Technology Architecture specific generic business technology individual standards Business models Business unit (organization) Business process - Processlandscapes Business data Applicationlandscape Individual application definition Services / use-cases Interfaces Data User Application platform Middleware (application server, MoM, DBMS) Operatingsystem Hardware / network 4

Let us turn back the clock by 15 years 5

Classes in 1995 Smalltalk was mature already Java fought for reasons to exist 6

Classes in 2010 Java is the biggest player in enterprise application development And Smalltalk? is not known in the enterprise 7

What happened? 8

Wake Up! This is a wake-up call! 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 10

You Are Good, We Are Good! Smalltalk is good At the language level Java EE is good At the architecture level Less syntax Less boilerplate code for a language-level task Less frameworks to write yourself Less boilerplate code for server infrastructure tasks 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? 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 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 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! 15

Why did this not become the instant role model for Smalltalk on the server? Java took its time 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 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 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, 19

EJB Container-Architecture of JEE Authori zation 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; }... } 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 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 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 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 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 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 27

Smalltalk EE Architecture Sketch (Java calling ST) 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 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 superclass: #{Core.Object} indexedtype: #none private: false instancevariablenames: 'name ' classinstancevariablenames: '' imports: '' category: '' name <propertytype: #string> ^name name: astring name := astring sayhello <serviceparametertypes: #() returntype: #string)> ^'Hello World to ', self name 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 31

Component Deployment Descriptors - Sketch Smalltalk defineclass: #MockupContainer beansetup superclass: #{SEE.BeanContainer}. <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]] 32

Which Container Local Usage Sketch context := LocalContainerContext for: #SampleContainer. bean := context lookup: #HelloWorld. bean name: 'Barcelona'. Transcript show: bean sayhello; cr. 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 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 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 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 37