SlideShare ist ein Scribd-Unternehmen logo
1 von 28
Downloaden Sie, um offline zu lesen
ESUG 2000




   When Smalltalk Meets the WEB

             Juan Carlos Cruz
            Valtech AG, Zurich
Solutions
•    VisualWave™ - Cincom
•    VisualWorks plugIn™ - Cincom
•    Classic Blend 2.0 ™ - Applied Reasoning
•    Classic Blend 3.0 ™ - Applied Reasoning
•    VisualAge ULC - IBM
•    CORBA - OMG
•    RMI-IIOP - Sun
The VisualWorks plugIn
                         WEB Browser

                         PlugIn (.DLL)
                 HTML

                Applet

                         Virtual Machine
To Install :
vw5iplugin-win32.exe      PlugIn Image
The plugIn Development
  Environment (PDE)
                 •  Generate Smalltalk
                    applets
                 •  Generate a customize
                    plugIn image
                 •  Debug Smalltalk web-
                    based applications



 PluginDev.pcl
Developing a PlugIn Applet
•  Install the PDE in your development image
   Tools->Load Parcel Named… PluginDev.pcl
•  Define your applet as Subclass of
   AppletModel
•  Create a parcel containing your applet
•  Save the parcel as an applet
   Parcel -> save…      …
                          plugin Parcel
                      …
Running an Applet in a Browser
                                Calculator.html
<HTML>
<HEAD> </HEAD>
<BODY> <P> MyTest </P>                            HTML
<EMBED SRC=“Calculator.pcl”
   VWOPEN= “CalculatorExample”
   WIDTH=“233” HEIGHT = “245”
   TYPE =“application/x-visualworks-parcel”>
</BODY>
</HTML>



                                                  Do it
Adapting an Existing Application
•  Duplicate a subset of the AppletModel
   protocol in your application class
•  File in…     applet-api.st

•  The essential protocol is:
  –  AppletModel >> isAppletModel
  –  AppletModel >> pluginConnection:
  –  AppletModel >> pluginConnection
Using the plugIn debugger
•  Start a plugIn debug session
   Tools -> Plug-in Debug tool
•  Click Enable Debug
•  Open the HTML page containing the applet in a
   web browser
•  Click Connect
•  Debug as you normally do …
•  Click Disable Debug when you have finished
Adding an Application to a
             Web Page
<EMBED
  SRC=“Calculator.pcl”                                    HTML
  VWOPEN= “CalculatorExample”
  WIDTH=“233” HEIGHT = “245”
  TYPE =“application/x-visualworks-parcel”>

Attributes:
SRC            The parcel containing the applet code
WIDTH          The width of the applet window
HEIGHT         The height of the applet window
TYPE           MIME type for the plugIn applet
VWOPEN         Class containing window specification
VWPRELOAD      A list of parcel file names to be loaded
Building a Custom plugIn Image
•  Standart plug-in image is plugin-base.im
•  For larger applications include much of the
   application in either:
  –  a custom-image or
  –  as additional parcels (invoked by the
     VWPRELOAD attribute in the EMBED tag)
•  Use Runtime Packager™ to build a custom-
   image. Parameters file: vwplugin.rtp
PlugIn Initialization File
              VWPLUGIN.INI
Attributes:
DIRECTORY             Current directory for launching VisualWorks
OBJECTENGINE          Name of the OE
BASEIMAGE             Name of the image to load
APPLICATION           Value matching the VWAPPL tag
EXTRA                 Extra information of interest to the application

Security Mesures:    “Trusted Site Strategy”
ALLOW                < all | local | hostID >
DENY                 < all | local | hostID >

- By default if a site is not listed it is ALLOWed. To switch begin
sequence with DENY ALL.
- Parcels are downloaded only if their sites are ALLOWed.
Communicating With a PlugIn
        Application
•  HTTP GET and POST operations.
  GET
  self getURL: url target: ‘target’
  self getURLAsString: url …

  POST
  self postToURL: url file: aFile
  self postToURL: url string: aString …

•  Sockets
•  Database Connect, DST, VisualWave
Classic Blend 2.0




Architecture: (1) a generic Java applet on the client, (2) a
portable application server, and (3) a lightweigth ORB
How CB works ?
           WEB Browser
                         Application Server
   HTML
                          VisualWorks

Java Virtual Machine         Application Model


  Generic Java Applet        Classic Blend Server


         ORB                        ORB

      CLIENT                       SERVER
How CB Works ?
HTML APPLET tag
<APPLET                                                  HTML
  code = com.arscorp.cb.icf.support.CbApplet
  codebase = <absolute URL for CbApplet>
  width = <pixel width> height= <pixel height>
  archive = <path to JAR files> ex: “cbClassNN.jar”>”
 <PARAM name “server”          value = “socket://<hostA: portA>;
                                       http://<hostB: portB>”>
 <PARAM name “appletType” value = “<Smalltalk-class>”>
 <PARAM name ‘specName” value = “<window-spec-method>”
 ..
</APPLET>
HTML Generator Tool
Classic Blend Server
13. Appendix A: Unsupported
        VisualWorks features
All Widgets                           CBDevelopersGuide 2.0
¡    drag and drop
¡    entry and exit notification
¡    entry and exit validation
¡    selection foreground and background color
¡    full text attributes
¡    dynamic focus control (#hasFocus: and its derivates)
•        border decoration policies
…. etc
Designing and Implementing
     Custom Widgets
Classic Blend Load Balancer
What is the difference between
      CB 2.0 and CB 3.0
•  Include Java and VisualAge Smalltalk as
   server platforms
•  Classic Blend is bean-based. Client GUIs
   can be constructed in any bean-compliant
   GUI builder
•  Flexibility to add any custom code or
   validation they want to their clients
Classic Blend 3.0
         •  Client CB Server
                   cbClient.jar
         •  Install Server
            Java
                   cbServer.jar
                  serverSrc.zip

           Smalltalk
                    cb30st.dat /
              otiadds.pcl+cb30vw.pcl
Building the Java GUI
package com.arscorp.demos.colorTest;
import java.awt.*;
import java.awt.event.*;
import com.arscorp.cbng.client.*;
import com.arscorp.cbng.client.builder.*;

 public class ColorTest extends CbBeanContainer implements
    InitializeListener {
     protected CbFrame _cbFrame;
     protected Panel _panel = null;
    protected Presenter _presenter;
    protected Button _buttonRed = null;
    protected Button _buttonBlue = null;
}
Building the Java GUI
public void buildWidgets() {
    _cbFrame.setName("CbFrame");
    _panel.setName("ButtonPanel");
    _cbFrame.setServerObject("ColorTestPresenter");
    _cbFrame.setSessionName("ColorServer");
    _cbFrame.setLayout(new GridLayout());
    _cbFrame.setBounds(116, 255, 538, 65);
    _buttonRed = new Button("Red");
    _buttonRed.setName("RedButton");
    _buttonRed.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent ae) {
                   _presenter.sendMessage(ae, "redButtonClicked");
           }
    });
    …

    _cbFrame.add(_panel, BorderLayout.NORTH);
    _panel.add(_buttonRed);
    _panel.add(_buttonBlue);
}
Creating the SM Server
•  Create a subclass of ArcbPresenter named
   ColorTestPresenter
•  Create a service method
 changePanelColorTo: newColor
     | buttonPanel |
     buttonPanel := self getPanelNamed:'ButtonPanel'.
     buttonPanel setBackground: newColor.
     buttonPanel repaint.

•  Add a method name
 redButtonClicked
     self changePanelColorTo: ColorValue red.
     ^nil
HTML File
<html>
<body>
<applet code="com.arscorp.cbng.client.CbApplet" align="baseline"
width="350" height="60">
<param name="BeanClass" value="com.arscorp.demos.colorTest.ColorTest">
<param name="SkipMessage" value="false">
<param name="LaunchButtonText" value="Press to start the Color Test">
<param name="PropertiesURL" value="file://127.0.0.1/c:cbClient
clientProperties.txt">
</applet>
</body>
</html>

ATTRIBUTES
code=com.arscorp.cbng.client.CbApplet
<PARAM name="BeanClass" value="[class-of-application-window]">
<PARAM name="LaunchMessage" value="[text-of-launch-message]">
References
  Technology
•  VW plugIn: www.cincom.com
•  ClassicBlend: www.appliedreasoning.com
•  VAST-ULC: www.ibm.com
  Consulting

•  Valtech: www.valtech.com

Weitere ähnliche Inhalte

Was ist angesagt?

EWD 3 Training Course Part 41: Building a React.js application with QEWD, Part 5
EWD 3 Training Course Part 41: Building a React.js application with QEWD, Part 5EWD 3 Training Course Part 41: Building a React.js application with QEWD, Part 5
EWD 3 Training Course Part 41: Building a React.js application with QEWD, Part 5Rob Tweed
 
EWD 3 Training Course Part 38: Building a React.js application with QEWD, Part 4
EWD 3 Training Course Part 38: Building a React.js application with QEWD, Part 4EWD 3 Training Course Part 38: Building a React.js application with QEWD, Part 4
EWD 3 Training Course Part 38: Building a React.js application with QEWD, Part 4Rob Tweed
 
BP204 It's Not Infernal: Dante's Nine Circles of XPages Heaven
BP204 It's Not Infernal: Dante's Nine Circles of XPages HeavenBP204 It's Not Infernal: Dante's Nine Circles of XPages Heaven
BP204 It's Not Infernal: Dante's Nine Circles of XPages HeavenMichael McGarel
 
Word press, the automated way
Word press, the automated wayWord press, the automated way
Word press, the automated wayMichaĂŤl Perrin
 
EWD 3 Training Course Part 39: Building a React.js application with QEWD, Part 3
EWD 3 Training Course Part 39: Building a React.js application with QEWD, Part 3EWD 3 Training Course Part 39: Building a React.js application with QEWD, Part 3
EWD 3 Training Course Part 39: Building a React.js application with QEWD, Part 3Rob Tweed
 
EWD 3 Training Course Part 13: Putting Everything so far into Practice using ...
EWD 3 Training Course Part 13: Putting Everything so far into Practice using ...EWD 3 Training Course Part 13: Putting Everything so far into Practice using ...
EWD 3 Training Course Part 13: Putting Everything so far into Practice using ...Rob Tweed
 
Finally, Professional Frontend Dev with ReactJS, WebPack & Symfony (Symfony C...
Finally, Professional Frontend Dev with ReactJS, WebPack & Symfony (Symfony C...Finally, Professional Frontend Dev with ReactJS, WebPack & Symfony (Symfony C...
Finally, Professional Frontend Dev with ReactJS, WebPack & Symfony (Symfony C...Ryan Weaver
 
Introduce native html5 streaming player
Introduce native html5 streaming playerIntroduce native html5 streaming player
Introduce native html5 streaming playerJesse (Chien Chen) Chen
 
yapi.js introduction (mopcon 2016 version)
yapi.js introduction (mopcon 2016 version)yapi.js introduction (mopcon 2016 version)
yapi.js introduction (mopcon 2016 version)Jesse (Chien Chen) Chen
 
Building Mobile Friendly APIs in Rails
Building Mobile Friendly APIs in RailsBuilding Mobile Friendly APIs in Rails
Building Mobile Friendly APIs in RailsJim Jeffers
 
The Role of Python in SPAs (Single-Page Applications)
The Role of Python in SPAs (Single-Page Applications)The Role of Python in SPAs (Single-Page Applications)
The Role of Python in SPAs (Single-Page Applications)David Gibbons
 
Yapi.js, An Adaptive Streaming Web Player
Yapi.js, An Adaptive Streaming Web PlayerYapi.js, An Adaptive Streaming Web Player
Yapi.js, An Adaptive Streaming Web PlayerJesse (Chien Chen) Chen
 
Docker presentasjon java bin
Docker presentasjon java binDocker presentasjon java bin
Docker presentasjon java binOlve Hansen
 
Build a video chat application with twilio, rails, and javascript (part 1)
Build a video chat application with twilio, rails, and javascript (part 1)Build a video chat application with twilio, rails, and javascript (part 1)
Build a video chat application with twilio, rails, and javascript (part 1)Katy Slemon
 
Creating Your First WordPress Plugin
Creating Your First WordPress PluginCreating Your First WordPress Plugin
Creating Your First WordPress PluginBrad Williams
 
JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014Ryan Cuprak
 
Externalizing Chatter Using Heroku, Angular.js, Node.js and Chatter REST APIs
Externalizing Chatter Using Heroku, Angular.js, Node.js and Chatter REST APIsExternalizing Chatter Using Heroku, Angular.js, Node.js and Chatter REST APIs
Externalizing Chatter Using Heroku, Angular.js, Node.js and Chatter REST APIsSalesforce Developers
 
Cutting edge HTML5 API you can use today (by Bohdan Rusinka)
 Cutting edge HTML5 API you can use today (by Bohdan Rusinka) Cutting edge HTML5 API you can use today (by Bohdan Rusinka)
Cutting edge HTML5 API you can use today (by Bohdan Rusinka)Binary Studio
 
How to Webpack your Django!
How to Webpack your Django!How to Webpack your Django!
How to Webpack your Django!David Gibbons
 
PhoneGap: Accessing Device Capabilities
PhoneGap: Accessing Device CapabilitiesPhoneGap: Accessing Device Capabilities
PhoneGap: Accessing Device CapabilitiesIvano Malavolta
 

Was ist angesagt? (20)

EWD 3 Training Course Part 41: Building a React.js application with QEWD, Part 5
EWD 3 Training Course Part 41: Building a React.js application with QEWD, Part 5EWD 3 Training Course Part 41: Building a React.js application with QEWD, Part 5
EWD 3 Training Course Part 41: Building a React.js application with QEWD, Part 5
 
EWD 3 Training Course Part 38: Building a React.js application with QEWD, Part 4
EWD 3 Training Course Part 38: Building a React.js application with QEWD, Part 4EWD 3 Training Course Part 38: Building a React.js application with QEWD, Part 4
EWD 3 Training Course Part 38: Building a React.js application with QEWD, Part 4
 
BP204 It's Not Infernal: Dante's Nine Circles of XPages Heaven
BP204 It's Not Infernal: Dante's Nine Circles of XPages HeavenBP204 It's Not Infernal: Dante's Nine Circles of XPages Heaven
BP204 It's Not Infernal: Dante's Nine Circles of XPages Heaven
 
Word press, the automated way
Word press, the automated wayWord press, the automated way
Word press, the automated way
 
EWD 3 Training Course Part 39: Building a React.js application with QEWD, Part 3
EWD 3 Training Course Part 39: Building a React.js application with QEWD, Part 3EWD 3 Training Course Part 39: Building a React.js application with QEWD, Part 3
EWD 3 Training Course Part 39: Building a React.js application with QEWD, Part 3
 
EWD 3 Training Course Part 13: Putting Everything so far into Practice using ...
EWD 3 Training Course Part 13: Putting Everything so far into Practice using ...EWD 3 Training Course Part 13: Putting Everything so far into Practice using ...
EWD 3 Training Course Part 13: Putting Everything so far into Practice using ...
 
Finally, Professional Frontend Dev with ReactJS, WebPack & Symfony (Symfony C...
Finally, Professional Frontend Dev with ReactJS, WebPack & Symfony (Symfony C...Finally, Professional Frontend Dev with ReactJS, WebPack & Symfony (Symfony C...
Finally, Professional Frontend Dev with ReactJS, WebPack & Symfony (Symfony C...
 
Introduce native html5 streaming player
Introduce native html5 streaming playerIntroduce native html5 streaming player
Introduce native html5 streaming player
 
yapi.js introduction (mopcon 2016 version)
yapi.js introduction (mopcon 2016 version)yapi.js introduction (mopcon 2016 version)
yapi.js introduction (mopcon 2016 version)
 
Building Mobile Friendly APIs in Rails
Building Mobile Friendly APIs in RailsBuilding Mobile Friendly APIs in Rails
Building Mobile Friendly APIs in Rails
 
The Role of Python in SPAs (Single-Page Applications)
The Role of Python in SPAs (Single-Page Applications)The Role of Python in SPAs (Single-Page Applications)
The Role of Python in SPAs (Single-Page Applications)
 
Yapi.js, An Adaptive Streaming Web Player
Yapi.js, An Adaptive Streaming Web PlayerYapi.js, An Adaptive Streaming Web Player
Yapi.js, An Adaptive Streaming Web Player
 
Docker presentasjon java bin
Docker presentasjon java binDocker presentasjon java bin
Docker presentasjon java bin
 
Build a video chat application with twilio, rails, and javascript (part 1)
Build a video chat application with twilio, rails, and javascript (part 1)Build a video chat application with twilio, rails, and javascript (part 1)
Build a video chat application with twilio, rails, and javascript (part 1)
 
Creating Your First WordPress Plugin
Creating Your First WordPress PluginCreating Your First WordPress Plugin
Creating Your First WordPress Plugin
 
JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014
 
Externalizing Chatter Using Heroku, Angular.js, Node.js and Chatter REST APIs
Externalizing Chatter Using Heroku, Angular.js, Node.js and Chatter REST APIsExternalizing Chatter Using Heroku, Angular.js, Node.js and Chatter REST APIs
Externalizing Chatter Using Heroku, Angular.js, Node.js and Chatter REST APIs
 
Cutting edge HTML5 API you can use today (by Bohdan Rusinka)
 Cutting edge HTML5 API you can use today (by Bohdan Rusinka) Cutting edge HTML5 API you can use today (by Bohdan Rusinka)
Cutting edge HTML5 API you can use today (by Bohdan Rusinka)
 
How to Webpack your Django!
How to Webpack your Django!How to Webpack your Django!
How to Webpack your Django!
 
PhoneGap: Accessing Device Capabilities
PhoneGap: Accessing Device CapabilitiesPhoneGap: Accessing Device Capabilities
PhoneGap: Accessing Device Capabilities
 

Ähnlich wie When Smalltalk Meets the Web

Structure your Play application with the cake pattern (and test it)
Structure your Play application with the cake pattern (and test it)Structure your Play application with the cake pattern (and test it)
Structure your Play application with the cake pattern (and test it)yann_s
 
DevOps Workflow: A Tutorial on Linux Containers
DevOps Workflow: A Tutorial on Linux ContainersDevOps Workflow: A Tutorial on Linux Containers
DevOps Workflow: A Tutorial on Linux Containersinside-BigData.com
 
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...Amazon Web Services
 
Dancing with websocket
Dancing with websocketDancing with websocket
Dancing with websocketDamien Krotkine
 
HOW TO DRONE.IO IN CI/CD WORLD
HOW TO DRONE.IO IN CI/CD WORLDHOW TO DRONE.IO IN CI/CD WORLD
HOW TO DRONE.IO IN CI/CD WORLDAleksandr Maklakov
 
Presentation Tier optimizations
Presentation Tier optimizationsPresentation Tier optimizations
Presentation Tier optimizationsAnup Hariharan Nair
 
MesosCon - Be a microservices hero
MesosCon - Be a microservices heroMesosCon - Be a microservices hero
MesosCon - Be a microservices heroDragos Dascalita Haut
 
AAI-3218 Production Deployment Best Practices for WebSphere Liberty Profile
AAI-3218 Production Deployment Best Practices for WebSphere Liberty ProfileAAI-3218 Production Deployment Best Practices for WebSphere Liberty Profile
AAI-3218 Production Deployment Best Practices for WebSphere Liberty ProfileWASdev Community
 
Managing the Continuous Delivery of Code to AWS Lambda
Managing the Continuous Delivery of Code to AWS LambdaManaging the Continuous Delivery of Code to AWS Lambda
Managing the Continuous Delivery of Code to AWS LambdaAmazon Web Services
 
Managing the Continuous Delivery of Code to AWS Lambda
Managing the Continuous Delivery of Code to AWS LambdaManaging the Continuous Delivery of Code to AWS Lambda
Managing the Continuous Delivery of Code to AWS LambdaAmazon Web Services
 
Building production-quality apps with Node.js
Building production-quality apps with Node.jsBuilding production-quality apps with Node.js
Building production-quality apps with Node.jsmattpardee
 
Lviv MD Day 2015 Олексій Озун "Introduction to the new Apple TV and TVos"
Lviv MD Day 2015 Олексій Озун "Introduction to the new Apple TV and TVos"Lviv MD Day 2015 Олексій Озун "Introduction to the new Apple TV and TVos"
Lviv MD Day 2015 Олексій Озун "Introduction to the new Apple TV and TVos"Lviv Startup Club
 
2008 - TechDays PT: Building Software + Services with Volta
2008 - TechDays PT: Building Software + Services with Volta2008 - TechDays PT: Building Software + Services with Volta
2008 - TechDays PT: Building Software + Services with VoltaDaniel Fisher
 
The Challenges of Becoming Cloud Native
The Challenges of Becoming Cloud NativeThe Challenges of Becoming Cloud Native
The Challenges of Becoming Cloud NativeBen Hall
 
Iac d.damyanov 4.pptx
Iac d.damyanov 4.pptxIac d.damyanov 4.pptx
Iac d.damyanov 4.pptxDimitar Damyanov
 
Native client
Native clientNative client
Native clientzyc901016
 
Alfresco Development Framework Basic
Alfresco Development Framework BasicAlfresco Development Framework Basic
Alfresco Development Framework BasicMario Romano
 
Codegnitorppt
CodegnitorpptCodegnitorppt
Codegnitorpptsreedath c g
 
Continuous Delivery with AWS Lambda - AWS April 2016 Webinar Series
Continuous Delivery with AWS Lambda - AWS April 2016 Webinar SeriesContinuous Delivery with AWS Lambda - AWS April 2016 Webinar Series
Continuous Delivery with AWS Lambda - AWS April 2016 Webinar SeriesAmazon Web Services
 
An Introduction to webOS
An Introduction to webOSAn Introduction to webOS
An Introduction to webOSKevin Decker
 

Ähnlich wie When Smalltalk Meets the Web (20)

Structure your Play application with the cake pattern (and test it)
Structure your Play application with the cake pattern (and test it)Structure your Play application with the cake pattern (and test it)
Structure your Play application with the cake pattern (and test it)
 
DevOps Workflow: A Tutorial on Linux Containers
DevOps Workflow: A Tutorial on Linux ContainersDevOps Workflow: A Tutorial on Linux Containers
DevOps Workflow: A Tutorial on Linux Containers
 
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...
 
Dancing with websocket
Dancing with websocketDancing with websocket
Dancing with websocket
 
HOW TO DRONE.IO IN CI/CD WORLD
HOW TO DRONE.IO IN CI/CD WORLDHOW TO DRONE.IO IN CI/CD WORLD
HOW TO DRONE.IO IN CI/CD WORLD
 
Presentation Tier optimizations
Presentation Tier optimizationsPresentation Tier optimizations
Presentation Tier optimizations
 
MesosCon - Be a microservices hero
MesosCon - Be a microservices heroMesosCon - Be a microservices hero
MesosCon - Be a microservices hero
 
AAI-3218 Production Deployment Best Practices for WebSphere Liberty Profile
AAI-3218 Production Deployment Best Practices for WebSphere Liberty ProfileAAI-3218 Production Deployment Best Practices for WebSphere Liberty Profile
AAI-3218 Production Deployment Best Practices for WebSphere Liberty Profile
 
Managing the Continuous Delivery of Code to AWS Lambda
Managing the Continuous Delivery of Code to AWS LambdaManaging the Continuous Delivery of Code to AWS Lambda
Managing the Continuous Delivery of Code to AWS Lambda
 
Managing the Continuous Delivery of Code to AWS Lambda
Managing the Continuous Delivery of Code to AWS LambdaManaging the Continuous Delivery of Code to AWS Lambda
Managing the Continuous Delivery of Code to AWS Lambda
 
Building production-quality apps with Node.js
Building production-quality apps with Node.jsBuilding production-quality apps with Node.js
Building production-quality apps with Node.js
 
Lviv MD Day 2015 Олексій Озун "Introduction to the new Apple TV and TVos"
Lviv MD Day 2015 Олексій Озун "Introduction to the new Apple TV and TVos"Lviv MD Day 2015 Олексій Озун "Introduction to the new Apple TV and TVos"
Lviv MD Day 2015 Олексій Озун "Introduction to the new Apple TV and TVos"
 
2008 - TechDays PT: Building Software + Services with Volta
2008 - TechDays PT: Building Software + Services with Volta2008 - TechDays PT: Building Software + Services with Volta
2008 - TechDays PT: Building Software + Services with Volta
 
The Challenges of Becoming Cloud Native
The Challenges of Becoming Cloud NativeThe Challenges of Becoming Cloud Native
The Challenges of Becoming Cloud Native
 
Iac d.damyanov 4.pptx
Iac d.damyanov 4.pptxIac d.damyanov 4.pptx
Iac d.damyanov 4.pptx
 
Native client
Native clientNative client
Native client
 
Alfresco Development Framework Basic
Alfresco Development Framework BasicAlfresco Development Framework Basic
Alfresco Development Framework Basic
 
Codegnitorppt
CodegnitorpptCodegnitorppt
Codegnitorppt
 
Continuous Delivery with AWS Lambda - AWS April 2016 Webinar Series
Continuous Delivery with AWS Lambda - AWS April 2016 Webinar SeriesContinuous Delivery with AWS Lambda - AWS April 2016 Webinar Series
Continuous Delivery with AWS Lambda - AWS April 2016 Webinar Series
 
An Introduction to webOS
An Introduction to webOSAn Introduction to webOS
An Introduction to webOS
 

Mehr von 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
 

Mehr von 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
 

KĂźrzlich hochgeladen

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
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
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
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
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
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
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
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
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
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 

KĂźrzlich hochgeladen (20)

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
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
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
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
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?
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
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...
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
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
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 

When Smalltalk Meets the Web

  • 1. ESUG 2000 When Smalltalk Meets the WEB Juan Carlos Cruz Valtech AG, Zurich
  • 2. Solutions •  VisualWave™ - Cincom •  VisualWorks plugIn™ - Cincom •  Classic Blend 2.0 ™ - Applied Reasoning •  Classic Blend 3.0 ™ - Applied Reasoning •  VisualAge ULC - IBM •  CORBA - OMG •  RMI-IIOP - Sun
  • 3. The VisualWorks plugIn WEB Browser PlugIn (.DLL) HTML Applet Virtual Machine To Install : vw5iplugin-win32.exe PlugIn Image
  • 4. The plugIn Development Environment (PDE) •  Generate Smalltalk applets •  Generate a customize plugIn image •  Debug Smalltalk web- based applications PluginDev.pcl
  • 5. Developing a PlugIn Applet •  Install the PDE in your development image Tools->Load Parcel Named… PluginDev.pcl •  Define your applet as Subclass of AppletModel •  Create a parcel containing your applet •  Save the parcel as an applet Parcel -> save… … plugin Parcel …
  • 6. Running an Applet in a Browser Calculator.html <HTML> <HEAD> </HEAD> <BODY> <P> MyTest </P> HTML <EMBED SRC=“Calculator.pcl” VWOPEN= “CalculatorExample” WIDTH=“233” HEIGHT = “245” TYPE =“application/x-visualworks-parcel”> </BODY> </HTML> Do it
  • 7. Adapting an Existing Application •  Duplicate a subset of the AppletModel protocol in your application class •  File in… applet-api.st •  The essential protocol is: –  AppletModel >> isAppletModel –  AppletModel >> pluginConnection: –  AppletModel >> pluginConnection
  • 8. Using the plugIn debugger •  Start a plugIn debug session Tools -> Plug-in Debug tool •  Click Enable Debug •  Open the HTML page containing the applet in a web browser •  Click Connect •  Debug as you normally do … •  Click Disable Debug when you have finished
  • 9. Adding an Application to a Web Page <EMBED SRC=“Calculator.pcl” HTML VWOPEN= “CalculatorExample” WIDTH=“233” HEIGHT = “245” TYPE =“application/x-visualworks-parcel”> Attributes: SRC The parcel containing the applet code WIDTH The width of the applet window HEIGHT The height of the applet window TYPE MIME type for the plugIn applet VWOPEN Class containing window specification VWPRELOAD A list of parcel file names to be loaded
  • 10. Building a Custom plugIn Image •  Standart plug-in image is plugin-base.im •  For larger applications include much of the application in either: –  a custom-image or –  as additional parcels (invoked by the VWPRELOAD attribute in the EMBED tag) •  Use Runtime Packager™ to build a custom- image. Parameters file: vwplugin.rtp
  • 11. PlugIn Initialization File VWPLUGIN.INI Attributes: DIRECTORY Current directory for launching VisualWorks OBJECTENGINE Name of the OE BASEIMAGE Name of the image to load APPLICATION Value matching the VWAPPL tag EXTRA Extra information of interest to the application Security Mesures: “Trusted Site Strategy” ALLOW < all | local | hostID > DENY < all | local | hostID > - By default if a site is not listed it is ALLOWed. To switch begin sequence with DENY ALL. - Parcels are downloaded only if their sites are ALLOWed.
  • 12. Communicating With a PlugIn Application •  HTTP GET and POST operations. GET self getURL: url target: ‘target’ self getURLAsString: url … POST self postToURL: url file: aFile self postToURL: url string: aString … •  Sockets •  Database Connect, DST, VisualWave
  • 13. Classic Blend 2.0 Architecture: (1) a generic Java applet on the client, (2) a portable application server, and (3) a lightweigth ORB
  • 14. How CB works ? WEB Browser Application Server HTML VisualWorks Java Virtual Machine Application Model Generic Java Applet Classic Blend Server ORB ORB CLIENT SERVER
  • 16. HTML APPLET tag <APPLET HTML code = com.arscorp.cb.icf.support.CbApplet codebase = <absolute URL for CbApplet> width = <pixel width> height= <pixel height> archive = <path to JAR files> ex: “cbClassNN.jar”>” <PARAM name “server” value = “socket://<hostA: portA>; http://<hostB: portB>”> <PARAM name “appletType” value = “<Smalltalk-class>”> <PARAM name ‘specName” value = “<window-spec-method>” .. </APPLET>
  • 19. 13. Appendix A: Unsupported VisualWorks features All Widgets CBDevelopersGuide 2.0 ¡ drag and drop ¡ entry and exit notification ¡ entry and exit validation ¡ selection foreground and background color ¡ full text attributes ¡ dynamic focus control (#hasFocus: and its derivates) • border decoration policies …. etc
  • 20. Designing and Implementing Custom Widgets
  • 21. Classic Blend Load Balancer
  • 22. What is the difference between CB 2.0 and CB 3.0 •  Include Java and VisualAge Smalltalk as server platforms •  Classic Blend is bean-based. Client GUIs can be constructed in any bean-compliant GUI builder •  Flexibility to add any custom code or validation they want to their clients
  • 23. Classic Blend 3.0 •  Client CB Server cbClient.jar •  Install Server Java cbServer.jar serverSrc.zip Smalltalk cb30st.dat / otiadds.pcl+cb30vw.pcl
  • 24. Building the Java GUI package com.arscorp.demos.colorTest; import java.awt.*; import java.awt.event.*; import com.arscorp.cbng.client.*; import com.arscorp.cbng.client.builder.*; public class ColorTest extends CbBeanContainer implements InitializeListener { protected CbFrame _cbFrame; protected Panel _panel = null; protected Presenter _presenter; protected Button _buttonRed = null; protected Button _buttonBlue = null; }
  • 25. Building the Java GUI public void buildWidgets() { _cbFrame.setName("CbFrame"); _panel.setName("ButtonPanel"); _cbFrame.setServerObject("ColorTestPresenter"); _cbFrame.setSessionName("ColorServer"); _cbFrame.setLayout(new GridLayout()); _cbFrame.setBounds(116, 255, 538, 65); _buttonRed = new Button("Red"); _buttonRed.setName("RedButton"); _buttonRed.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { _presenter.sendMessage(ae, "redButtonClicked"); } }); … _cbFrame.add(_panel, BorderLayout.NORTH); _panel.add(_buttonRed); _panel.add(_buttonBlue); }
  • 26. Creating the SM Server •  Create a subclass of ArcbPresenter named ColorTestPresenter •  Create a service method changePanelColorTo: newColor | buttonPanel | buttonPanel := self getPanelNamed:'ButtonPanel'. buttonPanel setBackground: newColor. buttonPanel repaint. •  Add a method name redButtonClicked self changePanelColorTo: ColorValue red. ^nil
  • 27. HTML File <html> <body> <applet code="com.arscorp.cbng.client.CbApplet" align="baseline" width="350" height="60"> <param name="BeanClass" value="com.arscorp.demos.colorTest.ColorTest"> <param name="SkipMessage" value="false"> <param name="LaunchButtonText" value="Press to start the Color Test"> <param name="PropertiesURL" value="file://127.0.0.1/c:cbClient clientProperties.txt"> </applet> </body> </html> ATTRIBUTES code=com.arscorp.cbng.client.CbApplet <PARAM name="BeanClass" value="[class-of-application-window]"> <PARAM name="LaunchMessage" value="[text-of-launch-message]">
  • 28. References Technology •  VW plugIn: www.cincom.com •  ClassicBlend: www.appliedreasoning.com •  VAST-ULC: www.ibm.com Consulting •  Valtech: www.valtech.com