SlideShare une entreprise Scribd logo
1  sur  130
Polyglot
OSGi
Matt Stine
Or...
“How to sneak your favorite JVM language into
the enterprise!”
polyglot

Many Languages

      From Ancient Greek πολύγλωττος
  (poluglōttos), “‘'many-tongued, polyglot'’”), from
  πολύς (polus), “‘many’”) + γλῶττα (glōtta),
               “‘'tongue, language'’”)
Polyglot Programming
We are entering a new era of software development.
For most of our (short) history, we've primarily written
code in a single language...but I'm beginning to see a
  time where even the core language...will cease its
    monoculture...applications of the future will take
   advantage of the polyglot nature of the language
world...it's all about choosing the right tool for the job
  and leveraging it correctly...the times of writing an
 application in a single general purpose language is
                          over.

- Excerpts from: Neal Ford, “Polyglot Programming”
http://memeagora.blogspot.com/2006/12/polyglot-
                 programming.html
The Golden
Hammer
Anti-pattern
Using the same tool,
product, or technique to
solve every problem
The Golden
Hammer
Anti-pattern
Using the same tool,
product, or technique to
solve every problem
You’re doing it already...
You’re doing it already...

 SQL
You’re doing it already...

 SQL
 JavaScript
You’re doing it already...

 SQL
 JavaScript
 XML
You’re doing it already...

 SQL
 JavaScript
 XML
 HTML
You’re doing it already...

 SQL
 JavaScript
 XML
 HTML
 Ant/Maven
Adoption of additional languages is driven
by critical mass being reached in an area
    of business or technical demand.
Drivers
 SQL


 JavaScript
 XML
 HTML
 Ant/Maven
Drivers
 SQL          Data Management in
              RDBMS
 JavaScript
 XML
 HTML
 Ant/Maven
Drivers
 SQL          Data Management in
              RDBMS
 JavaScript   Web 2.0/Ajax
 XML
 HTML
 Ant/Maven
Drivers
 SQL          Data Management in
              RDBMS
 JavaScript   Web 2.0/Ajax
 XML          Data interchange
 HTML
 Ant/Maven
Drivers
 SQL          Data Management in
              RDBMS
 JavaScript   Web 2.0/Ajax
 XML          Data interchange
 HTML         Web 1.0
 Ant/Maven
Drivers
 SQL          Data Management in
              RDBMS
 JavaScript   Web 2.0/Ajax
 XML          Data interchange
 HTML         Web 1.0
 Ant/Maven    Build configuration
Drivers?
Drivers?
Polyglot Drivers
Polyglot Drivers
 Concurrency/Multi-core Hardware
Polyglot Drivers
 Concurrency/Multi-core Hardware
 Framework Availability
Polyglot Drivers
 Concurrency/Multi-core Hardware
 Framework Availability
 Special purpose language constructs/libraries
Polyglot Drivers
 Concurrency/Multi-core Hardware
 Framework Availability
 Special purpose language constructs/libraries
 Essence over Ceremony
Polyglot Drivers
 Concurrency/Multi-core Hardware
 Framework Availability
 Special purpose language constructs/libraries
 Essence over Ceremony
 Testing
Polyglot Drivers
 Concurrency/Multi-core Hardware
 Framework Availability
 Special purpose language constructs/libraries
 Essence over Ceremony
 Testing
 The JVM Itself
OSGi
The Dynamic Module system for Java
OSGi Architecture
 Application/Bundles
                                      Services




                                                                  Security

                                                                             OSGi Platform
                           Service Registry
                                Lifecycle
                             Modules
                 Java Virtual Machine




                                                                             Java Platform
                Operating System
                       Hardware
                Inspired by Modular Java (Craig Walls), page 16
SOA in a JVM!
                             OSGi
                            Service
                            Registry




                                       Dis
                      ice




                                           c
                   erv




                                          ov
                 sS




                                           ers
                ter




                                               Se
             gis




                                               rvi
            Re




                                                 ce
      Service          Consumes Service          Consumer
      Bundle                                      Bundle



        Inspired by Modular Java (Craig Walls), page 17
Modularity...how?
Modularity...how?

Encapsulation
Modularity...how?

Encapsulation
Service Registry
Modularity...how?

Encapsulation
Service Registry
Versioning
Bundle Versioning
                             Foo
                            1.0.0




         Bar                                    Qib
        1.0.2                                  2.0.1




         Zab                                    Zab
        1.0.4                                  2.1.3


        Inspired by Modular Java (Craig Walls), page 18
Modularity...how?

Encapsulation
Service Registry
Versioning
Modularity...how?

Encapsulation
Service Registry
Versioning
Dynamism/Lifecycle
Modularity...how?

Encapsulation
Service Registry
Versioning
Dynamism/Lifecycle
Strong-Naming
OSGi Implementations
OSGi Implementations


       Equinox
PAX Tools for OSGi
PaxConstruct
PaxConstruct

Script-oriented toolkit for OSGi development
PaxConstruct

Script-oriented toolkit for OSGi development
Similar to Rails/Grails development model
PaxConstruct

Script-oriented toolkit for OSGi development
Similar to Rails/Grails development model
Built on Maven 2
PaxConstruct

Script-oriented toolkit for OSGi development
Similar to Rails/Grails development model
Built on Maven 2
PaxRunner
PaxRunner
OSGi framework launcher
PaxRunner
OSGi framework launcher
Facilitates quick start OSGi exploration
PaxRunner
OSGi framework launcher
Facilitates quick start OSGi exploration
Facilitates swapping OSGi platforms (works with all
major open source implementations)
PaxRunner
OSGi framework launcher
Facilitates quick start OSGi exploration
Facilitates swapping OSGi platforms (works with all
major open source implementations)
Facilitates provisioning OSGi bundles from multiple
sources
PaxRunner
OSGi framework launcher
Facilitates quick start OSGi exploration
Facilitates swapping OSGi platforms (works with all
major open source implementations)
Facilitates provisioning OSGi bundles from multiple
sources
Magic behind “pax-provision” and PaxExam
PaxExam
PaxExam
Testing toolkit for OSGi
PaxExam
Testing toolkit for OSGi
Facilitates in-container integration testing of bundles
PaxExam
Testing toolkit for OSGi
Facilitates in-container integration testing of bundles
Flow:
PaxExam
Testing toolkit for OSGi
Facilitates in-container integration testing of bundles
Flow:
  Starts OSGi container of choice
PaxExam
Testing toolkit for OSGi
Facilitates in-container integration testing of bundles
Flow:
  Starts OSGi container of choice
  Provisions and starts selected bundles
PaxExam
Testing toolkit for OSGi
Facilitates in-container integration testing of bundles
Flow:
  Starts OSGi container of choice
  Provisions and starts selected bundles
  Injects OSGi BundleContext to your JUnit test
PaxExam
Testing toolkit for OSGi
Facilitates in-container integration testing of bundles
Flow:
  Starts OSGi container of choice
  Provisions and starts selected bundles
  Injects OSGi BundleContext to your JUnit test
  Executes a test method
PaxExam
Testing toolkit for OSGi
Facilitates in-container integration testing of bundles
Flow:
  Starts OSGi container of choice
  Provisions and starts selected bundles
  Injects OSGi BundleContext to your JUnit test
  Executes a test method
  Rinse and repeat until done!
Why Polyglot OSGi?
Why Polyglot OSGi?


                  Java      Java Service
   Java Client
                 Service   Implementation




Client Module    Server Module
Why Polyglot OSGi?


                  Java      Java Service
   Java Client
                 Service   Implementation




Client Module    Server Module
Why Polyglot OSGi?


                  Java      Java Service
   Java Client
                 Service   Implementation




Client Module    Server Module
Why Polyglot OSGi?


                  Java      Java Service
   Java Client
                 Service   Implementation




Client Module    Server Module
Why Polyglot OSGi?


                  Java     Groovy Service
                            Java Service
   Java Client
                 Service   Implementation




Client Module    Server Module
Why Polyglot OSGi?


                  Java     GroovyService
                            Scala Service
                            Java Service
   Java Client
                 Service   Implementation




Client Module    Server Module
Why Polyglot OSGi?


                  Java     GroovyService
                            Clojure Service
                            Scala Service
                             Java
   Java Client
                 Service   Implementation




Client Module    Server Module
Why Polyglot OSGi?


                  Java     GroovyService
                            Clojure Service
                            JRubyService
                            Scala Service
                             Java
   Java Client
                 Service   Implementation




Client Module    Server Module
The line must be drawn HERE!
Polyglot OSGi Pros
Polyglot OSGi Pros

Manage Risk
Polyglot OSGi Pros

Manage Risk
Encapsulation
Polyglot OSGi Pros

Manage Risk
Encapsulation
Decoupled Architecture
Polyglot OSGi Pros

Manage Risk
Encapsulation
Decoupled Architecture
Java = JVM Lingua Franca
Polyglot OSGi Cons
Polyglot OSGi Cons

Constant Java translation at boundary
Polyglot OSGi Cons

Constant Java translation at boundary
Less idiomatic code
Polyglot OSGi Cons

Constant Java translation at boundary
Less idiomatic code
Language / OSGi mismatch
Polyglot OSGi Cons

Constant Java translation at boundary
Less idiomatic code
Language / OSGi mismatch
Not a silver bullet for large teams with few polyglots
A Polylgot OSGi Vending Machine
PGOVM Specification
Valid Actions:
  NICKLE, DIME, QUARTER, DOLLAR - insert money
  COIN RETURN - returns all inserted money
  SERVICE - a service person opens the machine and
  sets the available change and items
  GET-A, GET-B, GET-C - select item A ($.65), B ($1),
  or C ($1.50)
PGOVM Specification
Valid Responses:
  NICKLE, DIME, QUARTER - return coin
  A, B, C - vend item A, B, or C
Track state:
  available items (count, price, selector)
  available change (# of nickles, dimes, quarters, dollars
  available)
  currently inserted money
PGOVM Specification
Example Traces:
  Buy B with exact change:
  Q, Q, Q, Q, GET-B
  -> B
  Add change, hit coin return:
  Q, Q, COIN-RETURN
  -> Q, Q
  Buy A without exact change (return $.35)
  DOLLAR, GET-A
  -> A, Q, D
Why this spec?
Why this spec?


Simple to understand, yet...
Why this spec?


Simple to understand, yet...
...demonstrates reasonable complexity one might find
in a real application
Why this spec?


Simple to understand, yet...
...demonstrates reasonable complexity one might find
in a real application
Algorithms suitable for showcasing language features
Goals
Implement a Java interface contract for the spec
Test-drive a Java implementation
Use tests as a contract to implement in:
  Groovy
  Scala
  Clojure
Build a Spring MVC application to exercise different vending
machines
DEMO
http://localhost:8080/pgovm/vm.html
Java Contract
PaxExam Tests
Run Test Demo
Groovy Implementation
Scala
Implementation
Scala Gotchas
Scala Gotchas
Scala in Maven Central is NOT an OSGi Bundle!
Scala Gotchas
Scala in Maven Central is NOT an OSGi Bundle!
Can download from http://scala-lang.org.
Scala Gotchas
Scala in Maven Central is NOT an OSGi Bundle!
Can download from http://scala-lang.org.
Swap it out manually...
Scala Gotchas
Scala in Maven Central is NOT an OSGi Bundle!
Can download from http://scala-lang.org.
Swap it out manually...
...however...
Scala Gotchas
Scala in Maven Central is NOT an OSGi Bundle!
Can download from http://scala-lang.org.
Swap it out manually...
...however...
won’t work with Maven anymore!
Scala Gotchas
Scala in Maven Central is NOT an OSGi Bundle!
Can download from http://scala-lang.org.
Swap it out manually...
...however...
won’t work with Maven anymore!
Use Groovy script to swap out Scala jars.
Clojure
Implementation
Clojure Gotchas
Clojure Gotchas

Clojure also not available as an OSGi bundle!
Clojure Gotchas

Clojure also not available as an OSGi bundle!
Use Pax Construct to embed in bundle for Clojure
implementation.
Clojure Gotchas

Clojure also not available as an OSGi bundle!
Use Pax Construct to embed in bundle for Clojure
implementation.
Mixed experiences out there with trying to share a
common Clojure bundle.
Clojure Gotchas

Clojure also not available as an OSGi bundle!
Use Pax Construct to embed in bundle for Clojure
implementation.
Mixed experiences out there with trying to share a
common Clojure bundle.
OGEE Project (Roman Roelofsen)
http://ogeesource.org
Clojure Gotchas
Clojure Gotchas


Not OSGi related, but...
Clojure Gotchas


Not OSGi related, but...
Maven Clojure Plugin won’t seem to compile Clojure
first, so if your Java code depends on Clojure code...
Clojure Gotchas


Not OSGi related, but...
Maven Clojure Plugin won’t seem to compile Clojure
first, so if your Java code depends on Clojure code...
Must run “mvn clojure:compile” first
Spring MVC Web
Implementation
That’s all folks!

Please fill out your evaluations!

Contenu connexe

Tendances

Node.js #digpen presentation
Node.js #digpen presentationNode.js #digpen presentation
Node.js #digpen presentationGOSS Interactive
 
From Distributed to Pervasive OSGi
From Distributed to Pervasive OSGiFrom Distributed to Pervasive OSGi
From Distributed to Pervasive OSGiJan S. Rellermeyer
 
Distributed Services - OSGi 4.2 and possible future enhancements
Distributed Services - OSGi 4.2 and possible future enhancementsDistributed Services - OSGi 4.2 and possible future enhancements
Distributed Services - OSGi 4.2 and possible future enhancementsDavid Bosschaert
 
Java Modularity with OSGi
Java Modularity with OSGiJava Modularity with OSGi
Java Modularity with OSGiIlya Rybak
 
Building LinkedIn's Next Generation Architecture with OSGi
Building LinkedIn's Next Generation  Architecture with OSGiBuilding LinkedIn's Next Generation  Architecture with OSGi
Building LinkedIn's Next Generation Architecture with OSGiLinkedIn
 
OSGi & Java EE in GlassFish @ Silicon Valley Code Camp 2010
OSGi & Java EE in GlassFish @ Silicon Valley Code Camp 2010OSGi & Java EE in GlassFish @ Silicon Valley Code Camp 2010
OSGi & Java EE in GlassFish @ Silicon Valley Code Camp 2010Arun Gupta
 
Open Services Gateway Initiative (OSGI)
Open Services Gateway Initiative (OSGI)Open Services Gateway Initiative (OSGI)
Open Services Gateway Initiative (OSGI)Peter R. Egli
 
New Features of Java7 SE
New Features of Java7 SENew Features of Java7 SE
New Features of Java7 SEdogangoko
 
Groovy Power Features
Groovy Power FeaturesGroovy Power Features
Groovy Power FeaturesPaul King
 
Jalimo Slides Linuxtag2007 (English)
Jalimo Slides Linuxtag2007 (English)Jalimo Slides Linuxtag2007 (English)
Jalimo Slides Linuxtag2007 (English)smancke
 
IBM Impact session CICS & java a tale of liberty
IBM Impact session CICS & java a tale of libertyIBM Impact session CICS & java a tale of liberty
IBM Impact session CICS & java a tale of libertynick_garrod
 
OSGi and Java EE: A Hybrid Approach to Enterprise Java Application Development
OSGi and Java EE: A Hybrid Approach to Enterprise Java Application DevelopmentOSGi and Java EE: A Hybrid Approach to Enterprise Java Application Development
OSGi and Java EE: A Hybrid Approach to Enterprise Java Application DevelopmentSanjeeb Sahoo
 
Qualipso factory
Qualipso factoryQualipso factory
Qualipso factoryfunckychris
 
Benefits of OSGi in Practise
Benefits of OSGi in PractiseBenefits of OSGi in Practise
Benefits of OSGi in PractiseDavid Bosschaert
 
Polygot Java EE on the GraalVM
Polygot Java EE on the GraalVMPolygot Java EE on the GraalVM
Polygot Java EE on the GraalVMRyan Cuprak
 

Tendances (20)

Node.js #digpen presentation
Node.js #digpen presentationNode.js #digpen presentation
Node.js #digpen presentation
 
From Distributed to Pervasive OSGi
From Distributed to Pervasive OSGiFrom Distributed to Pervasive OSGi
From Distributed to Pervasive OSGi
 
Distributed Services - OSGi 4.2 and possible future enhancements
Distributed Services - OSGi 4.2 and possible future enhancementsDistributed Services - OSGi 4.2 and possible future enhancements
Distributed Services - OSGi 4.2 and possible future enhancements
 
Java Modularity with OSGi
Java Modularity with OSGiJava Modularity with OSGi
Java Modularity with OSGi
 
Building LinkedIn's Next Generation Architecture with OSGi
Building LinkedIn's Next Generation  Architecture with OSGiBuilding LinkedIn's Next Generation  Architecture with OSGi
Building LinkedIn's Next Generation Architecture with OSGi
 
OSGi & Java EE in GlassFish @ Silicon Valley Code Camp 2010
OSGi & Java EE in GlassFish @ Silicon Valley Code Camp 2010OSGi & Java EE in GlassFish @ Silicon Valley Code Camp 2010
OSGi & Java EE in GlassFish @ Silicon Valley Code Camp 2010
 
Open Services Gateway Initiative (OSGI)
Open Services Gateway Initiative (OSGI)Open Services Gateway Initiative (OSGI)
Open Services Gateway Initiative (OSGI)
 
New Features of Java7 SE
New Features of Java7 SENew Features of Java7 SE
New Features of Java7 SE
 
Karaf ee-apachecon eu-2012
Karaf ee-apachecon eu-2012Karaf ee-apachecon eu-2012
Karaf ee-apachecon eu-2012
 
Groovy Power Features
Groovy Power FeaturesGroovy Power Features
Groovy Power Features
 
JEE 8, A Big Overview
JEE 8, A Big OverviewJEE 8, A Big Overview
JEE 8, A Big Overview
 
Jalimo Slides Linuxtag2007 (English)
Jalimo Slides Linuxtag2007 (English)Jalimo Slides Linuxtag2007 (English)
Jalimo Slides Linuxtag2007 (English)
 
IBM Impact session CICS & java a tale of liberty
IBM Impact session CICS & java a tale of libertyIBM Impact session CICS & java a tale of liberty
IBM Impact session CICS & java a tale of liberty
 
Intro To OSGi
Intro To OSGiIntro To OSGi
Intro To OSGi
 
OSGi and Java EE: A Hybrid Approach to Enterprise Java Application Development
OSGi and Java EE: A Hybrid Approach to Enterprise Java Application DevelopmentOSGi and Java EE: A Hybrid Approach to Enterprise Java Application Development
OSGi and Java EE: A Hybrid Approach to Enterprise Java Application Development
 
Aws sdk-php-guide
Aws sdk-php-guideAws sdk-php-guide
Aws sdk-php-guide
 
Qualipso factory
Qualipso factoryQualipso factory
Qualipso factory
 
Benefits of OSGi in Practise
Benefits of OSGi in PractiseBenefits of OSGi in Practise
Benefits of OSGi in Practise
 
Polygot Java EE on the GraalVM
Polygot Java EE on the GraalVMPolygot Java EE on the GraalVM
Polygot Java EE on the GraalVM
 
Intro to OSGi
Intro to OSGiIntro to OSGi
Intro to OSGi
 

En vedette

The intervw4 Paul Tankersley...becslideshow--4 P.T. only
The intervw4 Paul Tankersley...becslideshow--4 P.T. onlyThe intervw4 Paul Tankersley...becslideshow--4 P.T. only
The intervw4 Paul Tankersley...becslideshow--4 P.T. onlyAtyeb Atum RE
 
Testdigitalsingage
TestdigitalsingageTestdigitalsingage
Testdigitalsingagejaveyard
 
Galileo Differentiators, Initial Services and Synergies with Copernicus
Galileo Differentiators, Initial Services and Synergies with Copernicus Galileo Differentiators, Initial Services and Synergies with Copernicus
Galileo Differentiators, Initial Services and Synergies with Copernicus The European GNSS Agency (GSA)
 
Use Social Media to Grow Your Fan Base
Use Social Media to Grow Your Fan BaseUse Social Media to Grow Your Fan Base
Use Social Media to Grow Your Fan BaseRebecca Wardlow, CDMP
 
Tecnicas educativas en salud
Tecnicas educativas en saludTecnicas educativas en salud
Tecnicas educativas en saludFelipe Flores
 
IFC 2015: 'Smart' Fundrasing Workshop
IFC 2015: 'Smart' Fundrasing WorkshopIFC 2015: 'Smart' Fundrasing Workshop
IFC 2015: 'Smart' Fundrasing WorkshopColin Habberton
 
Wavelength April 2015 Volume 19 No.1
Wavelength April 2015 Volume 19 No.1Wavelength April 2015 Volume 19 No.1
Wavelength April 2015 Volume 19 No.1Jerry Duncan
 
Solution focused approach to agile coaching for the Mini XP Days Benelux 2010
Solution focused approach to agile coaching for the Mini XP Days Benelux 2010Solution focused approach to agile coaching for the Mini XP Days Benelux 2010
Solution focused approach to agile coaching for the Mini XP Days Benelux 2010Pierluigi Pugliese
 
Enabling Smart Data on M2M Gateways and Aggregators - Walt Bowers
Enabling Smart Data on M2M Gateways and Aggregators - Walt BowersEnabling Smart Data on M2M Gateways and Aggregators - Walt Bowers
Enabling Smart Data on M2M Gateways and Aggregators - Walt Bowersmfrancis
 
Groups as Systems: Getting into Flow
Groups as Systems: Getting into FlowGroups as Systems: Getting into Flow
Groups as Systems: Getting into FlowBarry Casey
 
Development and evaluation of the PCYC Catalyst outdoor adventure interventio...
Development and evaluation of the PCYC Catalyst outdoor adventure interventio...Development and evaluation of the PCYC Catalyst outdoor adventure interventio...
Development and evaluation of the PCYC Catalyst outdoor adventure interventio...James Neill
 
3rd ventricle n pineal gland
3rd ventricle n pineal gland3rd ventricle n pineal gland
3rd ventricle n pineal glandRati Tandon
 
abonobo - your business on mobile
abonobo - your business on mobileabonobo - your business on mobile
abonobo - your business on mobileguest7a66377
 

En vedette (16)

2 osn ponyatia_bukh_ucheta
2 osn ponyatia_bukh_ucheta2 osn ponyatia_bukh_ucheta
2 osn ponyatia_bukh_ucheta
 
The intervw4 Paul Tankersley...becslideshow--4 P.T. only
The intervw4 Paul Tankersley...becslideshow--4 P.T. onlyThe intervw4 Paul Tankersley...becslideshow--4 P.T. only
The intervw4 Paul Tankersley...becslideshow--4 P.T. only
 
Testdigitalsingage
TestdigitalsingageTestdigitalsingage
Testdigitalsingage
 
Galileo Differentiators, Initial Services and Synergies with Copernicus
Galileo Differentiators, Initial Services and Synergies with Copernicus Galileo Differentiators, Initial Services and Synergies with Copernicus
Galileo Differentiators, Initial Services and Synergies with Copernicus
 
Use Social Media to Grow Your Fan Base
Use Social Media to Grow Your Fan BaseUse Social Media to Grow Your Fan Base
Use Social Media to Grow Your Fan Base
 
Tecnicas educativas en salud
Tecnicas educativas en saludTecnicas educativas en salud
Tecnicas educativas en salud
 
IFC 2015: 'Smart' Fundrasing Workshop
IFC 2015: 'Smart' Fundrasing WorkshopIFC 2015: 'Smart' Fundrasing Workshop
IFC 2015: 'Smart' Fundrasing Workshop
 
Wavelength April 2015 Volume 19 No.1
Wavelength April 2015 Volume 19 No.1Wavelength April 2015 Volume 19 No.1
Wavelength April 2015 Volume 19 No.1
 
Solution focused approach to agile coaching for the Mini XP Days Benelux 2010
Solution focused approach to agile coaching for the Mini XP Days Benelux 2010Solution focused approach to agile coaching for the Mini XP Days Benelux 2010
Solution focused approach to agile coaching for the Mini XP Days Benelux 2010
 
Enabling Smart Data on M2M Gateways and Aggregators - Walt Bowers
Enabling Smart Data on M2M Gateways and Aggregators - Walt BowersEnabling Smart Data on M2M Gateways and Aggregators - Walt Bowers
Enabling Smart Data on M2M Gateways and Aggregators - Walt Bowers
 
Iot
IotIot
Iot
 
Social Networking Security
Social Networking SecuritySocial Networking Security
Social Networking Security
 
Groups as Systems: Getting into Flow
Groups as Systems: Getting into FlowGroups as Systems: Getting into Flow
Groups as Systems: Getting into Flow
 
Development and evaluation of the PCYC Catalyst outdoor adventure interventio...
Development and evaluation of the PCYC Catalyst outdoor adventure interventio...Development and evaluation of the PCYC Catalyst outdoor adventure interventio...
Development and evaluation of the PCYC Catalyst outdoor adventure interventio...
 
3rd ventricle n pineal gland
3rd ventricle n pineal gland3rd ventricle n pineal gland
3rd ventricle n pineal gland
 
abonobo - your business on mobile
abonobo - your business on mobileabonobo - your business on mobile
abonobo - your business on mobile
 

Similaire à Polyglot OSGi

Why don't you Groovy?
Why don't you Groovy?Why don't you Groovy?
Why don't you Groovy?Orest Ivasiv
 
GlassFish OSGi Server
GlassFish OSGi ServerGlassFish OSGi Server
GlassFish OSGi ServerArtur Alves
 
TDC 2011: OSGi-enabled Java EE Application
TDC 2011: OSGi-enabled Java EE ApplicationTDC 2011: OSGi-enabled Java EE Application
TDC 2011: OSGi-enabled Java EE ApplicationArun Gupta
 
Dynamic Languages Web Frameworks Indicthreads 2009
Dynamic Languages Web Frameworks Indicthreads 2009Dynamic Languages Web Frameworks Indicthreads 2009
Dynamic Languages Web Frameworks Indicthreads 2009Arun Gupta
 
Modular Java EE in the Cloud
Modular Java EE in the CloudModular Java EE in the Cloud
Modular Java EE in the CloudBert Ertman
 
OSGi enRoute Unveiled - P Kriens
OSGi enRoute Unveiled - P KriensOSGi enRoute Unveiled - P Kriens
OSGi enRoute Unveiled - P Kriensmfrancis
 
OSGi-enabled Java EE Applications using GlassFish
OSGi-enabled Java EE Applications using GlassFishOSGi-enabled Java EE Applications using GlassFish
OSGi-enabled Java EE Applications using GlassFishArun Gupta
 
OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune...
OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune...OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune...
OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune...IndicThreads
 
Introduction To The Eclipse Platform
Introduction To The Eclipse PlatformIntroduction To The Eclipse Platform
Introduction To The Eclipse Platformciukes
 
Sviluppo di architetture orientate ai servizi con EclipseSOA
Sviluppo di architetture orientate ai servizi con EclipseSOA Sviluppo di architetture orientate ai servizi con EclipseSOA
Sviluppo di architetture orientate ai servizi con EclipseSOA Alberto Lagna
 
Enabling modularization through OSGi and SpringDM
Enabling modularization through OSGi and SpringDMEnabling modularization through OSGi and SpringDM
Enabling modularization through OSGi and SpringDMmukulobject
 
Groovy Finesse
Groovy FinesseGroovy Finesse
Groovy Finessemzgubin
 
Groovy Finesse
Groovy FinesseGroovy Finesse
Groovy Finessemzgubin
 
OSGi-enabled Java EE Applications using GlassFish at JCertif 2011
OSGi-enabled Java EE Applications using GlassFish at JCertif 2011OSGi-enabled Java EE Applications using GlassFish at JCertif 2011
OSGi-enabled Java EE Applications using GlassFish at JCertif 2011Arun Gupta
 
HOW TO CREATE AWESOME POLYGLOT APPLICATIONS USING GRAALVM
HOW TO CREATE AWESOME POLYGLOT APPLICATIONS USING GRAALVMHOW TO CREATE AWESOME POLYGLOT APPLICATIONS USING GRAALVM
HOW TO CREATE AWESOME POLYGLOT APPLICATIONS USING GRAALVMOwais Zahid
 
Eclipse vs Netbean vs Railo
Eclipse vs Netbean vs RailoEclipse vs Netbean vs Railo
Eclipse vs Netbean vs RailoMohd Safian
 

Similaire à Polyglot OSGi (20)

Hybrid Applications
Hybrid ApplicationsHybrid Applications
Hybrid Applications
 
Why don't you Groovy?
Why don't you Groovy?Why don't you Groovy?
Why don't you Groovy?
 
Tales from the OSGi trenches
Tales from the OSGi trenchesTales from the OSGi trenches
Tales from the OSGi trenches
 
GlassFish OSGi Server
GlassFish OSGi ServerGlassFish OSGi Server
GlassFish OSGi Server
 
TDC 2011: OSGi-enabled Java EE Application
TDC 2011: OSGi-enabled Java EE ApplicationTDC 2011: OSGi-enabled Java EE Application
TDC 2011: OSGi-enabled Java EE Application
 
Dynamic Languages Web Frameworks Indicthreads 2009
Dynamic Languages Web Frameworks Indicthreads 2009Dynamic Languages Web Frameworks Indicthreads 2009
Dynamic Languages Web Frameworks Indicthreads 2009
 
CQ5 and Sling overview
CQ5 and Sling overviewCQ5 and Sling overview
CQ5 and Sling overview
 
Modular Java EE in the Cloud
Modular Java EE in the CloudModular Java EE in the Cloud
Modular Java EE in the Cloud
 
OSGi enRoute Unveiled - P Kriens
OSGi enRoute Unveiled - P KriensOSGi enRoute Unveiled - P Kriens
OSGi enRoute Unveiled - P Kriens
 
OSGi-enabled Java EE Applications using GlassFish
OSGi-enabled Java EE Applications using GlassFishOSGi-enabled Java EE Applications using GlassFish
OSGi-enabled Java EE Applications using GlassFish
 
OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune...
OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune...OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune...
OSGi For Java Infrastructures [5th IndicThreads Conference On Java 2010, Pune...
 
Introduction To The Eclipse Platform
Introduction To The Eclipse PlatformIntroduction To The Eclipse Platform
Introduction To The Eclipse Platform
 
Sviluppo di architetture orientate ai servizi con EclipseSOA
Sviluppo di architetture orientate ai servizi con EclipseSOA Sviluppo di architetture orientate ai servizi con EclipseSOA
Sviluppo di architetture orientate ai servizi con EclipseSOA
 
OSGi for mere mortals
OSGi for mere mortalsOSGi for mere mortals
OSGi for mere mortals
 
Enabling modularization through OSGi and SpringDM
Enabling modularization through OSGi and SpringDMEnabling modularization through OSGi and SpringDM
Enabling modularization through OSGi and SpringDM
 
Groovy Finesse
Groovy FinesseGroovy Finesse
Groovy Finesse
 
Groovy Finesse
Groovy FinesseGroovy Finesse
Groovy Finesse
 
OSGi-enabled Java EE Applications using GlassFish at JCertif 2011
OSGi-enabled Java EE Applications using GlassFish at JCertif 2011OSGi-enabled Java EE Applications using GlassFish at JCertif 2011
OSGi-enabled Java EE Applications using GlassFish at JCertif 2011
 
HOW TO CREATE AWESOME POLYGLOT APPLICATIONS USING GRAALVM
HOW TO CREATE AWESOME POLYGLOT APPLICATIONS USING GRAALVMHOW TO CREATE AWESOME POLYGLOT APPLICATIONS USING GRAALVM
HOW TO CREATE AWESOME POLYGLOT APPLICATIONS USING GRAALVM
 
Eclipse vs Netbean vs Railo
Eclipse vs Netbean vs RailoEclipse vs Netbean vs Railo
Eclipse vs Netbean vs Railo
 

Plus de Matt Stine

Architectures That Bend but Don't Break
Architectures That Bend but Don't BreakArchitectures That Bend but Don't Break
Architectures That Bend but Don't BreakMatt Stine
 
Cloud Native Architecture Patterns Tutorial
Cloud Native Architecture Patterns TutorialCloud Native Architecture Patterns Tutorial
Cloud Native Architecture Patterns TutorialMatt Stine
 
Resilient Architecture
Resilient ArchitectureResilient Architecture
Resilient ArchitectureMatt Stine
 
Cloud Foundry: The Best Place to Run Microservices
Cloud Foundry: The Best Place to Run MicroservicesCloud Foundry: The Best Place to Run Microservices
Cloud Foundry: The Best Place to Run MicroservicesMatt Stine
 
Reactive Fault Tolerant Programming with Hystrix and RxJava
Reactive Fault Tolerant Programming with Hystrix and RxJavaReactive Fault Tolerant Programming with Hystrix and RxJava
Reactive Fault Tolerant Programming with Hystrix and RxJavaMatt Stine
 
Lattice: A Cloud-Native Platform for Your Spring Applications
Lattice: A Cloud-Native Platform for Your Spring ApplicationsLattice: A Cloud-Native Platform for Your Spring Applications
Lattice: A Cloud-Native Platform for Your Spring ApplicationsMatt Stine
 
The Cloud Native Journey
The Cloud Native JourneyThe Cloud Native Journey
The Cloud Native JourneyMatt Stine
 
To Microservices and Beyond
To Microservices and BeyondTo Microservices and Beyond
To Microservices and BeyondMatt Stine
 
Deploying Microservices to Cloud Foundry
Deploying Microservices to Cloud FoundryDeploying Microservices to Cloud Foundry
Deploying Microservices to Cloud FoundryMatt Stine
 
Cloud Foundry Diego: Modular and Extensible Substructure for Microservices
Cloud Foundry Diego: Modular and Extensible Substructure for MicroservicesCloud Foundry Diego: Modular and Extensible Substructure for Microservices
Cloud Foundry Diego: Modular and Extensible Substructure for MicroservicesMatt Stine
 
Building Distributed Systems with Netflix OSS and Spring Cloud
Building Distributed Systems with Netflix OSS and Spring CloudBuilding Distributed Systems with Netflix OSS and Spring Cloud
Building Distributed Systems with Netflix OSS and Spring CloudMatt Stine
 
Pivotal Cloud Platform Roadshow: Sign Up for Pivotal Web Services
Pivotal Cloud Platform Roadshow: Sign Up for Pivotal Web ServicesPivotal Cloud Platform Roadshow: Sign Up for Pivotal Web Services
Pivotal Cloud Platform Roadshow: Sign Up for Pivotal Web ServicesMatt Stine
 
A Recovering Java Developer Learns to Go
A Recovering Java Developer Learns to GoA Recovering Java Developer Learns to Go
A Recovering Java Developer Learns to GoMatt Stine
 
Agile Development with OSGi
Agile Development with OSGiAgile Development with OSGi
Agile Development with OSGiMatt Stine
 
Cloud Foundry and Microservices: A Mutualistic Symbiotic Relationship
Cloud Foundry and Microservices: A Mutualistic Symbiotic RelationshipCloud Foundry and Microservices: A Mutualistic Symbiotic Relationship
Cloud Foundry and Microservices: A Mutualistic Symbiotic RelationshipMatt Stine
 
It's the End of the Cloud as We Know It
It's the End of the Cloud as We Know ItIt's the End of the Cloud as We Know It
It's the End of the Cloud as We Know ItMatt Stine
 
Functional solid
Functional solidFunctional solid
Functional solidMatt Stine
 
The Seven Wastes of Software Development
The Seven Wastes of Software DevelopmentThe Seven Wastes of Software Development
The Seven Wastes of Software DevelopmentMatt Stine
 
Information Sciences Solutions to Core Facility Problems at St. Jude Children...
Information Sciences Solutions to Core Facility Problems at St. Jude Children...Information Sciences Solutions to Core Facility Problems at St. Jude Children...
Information Sciences Solutions to Core Facility Problems at St. Jude Children...Matt Stine
 

Plus de Matt Stine (20)

Architectures That Bend but Don't Break
Architectures That Bend but Don't BreakArchitectures That Bend but Don't Break
Architectures That Bend but Don't Break
 
Cloud Native Architecture Patterns Tutorial
Cloud Native Architecture Patterns TutorialCloud Native Architecture Patterns Tutorial
Cloud Native Architecture Patterns Tutorial
 
Resilient Architecture
Resilient ArchitectureResilient Architecture
Resilient Architecture
 
Cloud Foundry: The Best Place to Run Microservices
Cloud Foundry: The Best Place to Run MicroservicesCloud Foundry: The Best Place to Run Microservices
Cloud Foundry: The Best Place to Run Microservices
 
Reactive Fault Tolerant Programming with Hystrix and RxJava
Reactive Fault Tolerant Programming with Hystrix and RxJavaReactive Fault Tolerant Programming with Hystrix and RxJava
Reactive Fault Tolerant Programming with Hystrix and RxJava
 
Lattice: A Cloud-Native Platform for Your Spring Applications
Lattice: A Cloud-Native Platform for Your Spring ApplicationsLattice: A Cloud-Native Platform for Your Spring Applications
Lattice: A Cloud-Native Platform for Your Spring Applications
 
The Cloud Native Journey
The Cloud Native JourneyThe Cloud Native Journey
The Cloud Native Journey
 
To Microservices and Beyond
To Microservices and BeyondTo Microservices and Beyond
To Microservices and Beyond
 
Deploying Microservices to Cloud Foundry
Deploying Microservices to Cloud FoundryDeploying Microservices to Cloud Foundry
Deploying Microservices to Cloud Foundry
 
Cloud Foundry Diego: Modular and Extensible Substructure for Microservices
Cloud Foundry Diego: Modular and Extensible Substructure for MicroservicesCloud Foundry Diego: Modular and Extensible Substructure for Microservices
Cloud Foundry Diego: Modular and Extensible Substructure for Microservices
 
Building Distributed Systems with Netflix OSS and Spring Cloud
Building Distributed Systems with Netflix OSS and Spring CloudBuilding Distributed Systems with Netflix OSS and Spring Cloud
Building Distributed Systems with Netflix OSS and Spring Cloud
 
Pivotal Cloud Platform Roadshow: Sign Up for Pivotal Web Services
Pivotal Cloud Platform Roadshow: Sign Up for Pivotal Web ServicesPivotal Cloud Platform Roadshow: Sign Up for Pivotal Web Services
Pivotal Cloud Platform Roadshow: Sign Up for Pivotal Web Services
 
A Recovering Java Developer Learns to Go
A Recovering Java Developer Learns to GoA Recovering Java Developer Learns to Go
A Recovering Java Developer Learns to Go
 
Agile Development with OSGi
Agile Development with OSGiAgile Development with OSGi
Agile Development with OSGi
 
Cloud Foundry and Microservices: A Mutualistic Symbiotic Relationship
Cloud Foundry and Microservices: A Mutualistic Symbiotic RelationshipCloud Foundry and Microservices: A Mutualistic Symbiotic Relationship
Cloud Foundry and Microservices: A Mutualistic Symbiotic Relationship
 
It's the End of the Cloud as We Know It
It's the End of the Cloud as We Know ItIt's the End of the Cloud as We Know It
It's the End of the Cloud as We Know It
 
Vert.x
Vert.xVert.x
Vert.x
 
Functional solid
Functional solidFunctional solid
Functional solid
 
The Seven Wastes of Software Development
The Seven Wastes of Software DevelopmentThe Seven Wastes of Software Development
The Seven Wastes of Software Development
 
Information Sciences Solutions to Core Facility Problems at St. Jude Children...
Information Sciences Solutions to Core Facility Problems at St. Jude Children...Information Sciences Solutions to Core Facility Problems at St. Jude Children...
Information Sciences Solutions to Core Facility Problems at St. Jude Children...
 

Dernier

WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
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
 
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
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech 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
 
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
 
[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
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
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
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
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
 
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
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
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
 

Dernier (20)

WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
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...
 
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
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech 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...
 
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
 
[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
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
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
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
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
 
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
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
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
 

Polyglot OSGi

Notes de l'éditeur

  1. Today I’d like to talk to you briefly about why within the next decade you’ll no longer refer to yourself as a Java developer, at least not in terms of the language that you use on a day to day basis. And at the end of my lighting talk I’ll have a prize for the first person that can identify both the artist and title of the sketch that I have here in my slides.
  2. The word polyglot is used in various contexts to indicate that many languages are in use. It can be used as an adjective to describe a work containing several languages, such as a polyglot Bible. We can also use it to describe a region comprising various linguistic groups - a notable example is India which recognizes 22 official languages and can number over a thousand individual “mother tongues.” We can also describe a person who masters and speaks several languages as a polyglot.
  3. The term “polyglot programming” is generally recognized to have been coined by Neal Ford in late 2006. I’ve pulled together here an excerpt of the major points that Neil raises in his blog. Quoting now, “We are entering a new era of software development. For most of our (short) history, we’ve primarily written code in a single language...but I’m beginning to see a time when even the core language...will cease its monoculture...application of the future will take advantage of the polyglot nature of the language world...it’s all about choosing the right tool for the job and leveraging it correctly...the times of writing an application in a single general purpose language is over.” Of course one of the primary undercurrents here is that we’re trying to avoid one of the most common anti-patterns in software development today, that of...
  4. THE GOLDEN HAMMER. The golden hammer is nothing more than continually attempting to use the same tool, product, or technique to solve every problem. And I would assert to you that one of the most heavily abused tools in the software development world today is, you guessed it, JAVA. We’ve even gone so far as to categorize our development shops as “Java shops” - meaning that anything that we deliver, regardless of the business domain or problem, will be implemented using Java. Now I’d like to break down the psychological barriers here a bit by asserting that...
  5. ...you’re really doing this already. Let’s have a show of hands. How many of you have worked with on an application recently that persists data into a relational database? OK, how many of you used SQL <transition> to do it? How many of you have worked on an application that uses some form of Ajax functionality? How many of you used JavaScript <transition> to do it? How many of you have configured a Spring or Java EE application or worked with some form of web services recently? How many of you ended up in an <transition> XML document? Written a web page? Used <transition> HTML? How many of you have automated your application build, packaging, testing, and/or deployment? How many of you used <transition> Ant or Maven to do it? Ant and Maven aren’t languages per se, yet the use XML to define a domain-specific language for these types of tasks. So why aren’t we resistant to using some combination of these languages in addition to Java? I would argue that...
  6. ...you’re really doing this already. Let’s have a show of hands. How many of you have worked with on an application recently that persists data into a relational database? OK, how many of you used SQL <transition> to do it? How many of you have worked on an application that uses some form of Ajax functionality? How many of you used JavaScript <transition> to do it? How many of you have configured a Spring or Java EE application or worked with some form of web services recently? How many of you ended up in an <transition> XML document? Written a web page? Used <transition> HTML? How many of you have automated your application build, packaging, testing, and/or deployment? How many of you used <transition> Ant or Maven to do it? Ant and Maven aren’t languages per se, yet the use XML to define a domain-specific language for these types of tasks. So why aren’t we resistant to using some combination of these languages in addition to Java? I would argue that...
  7. ...you’re really doing this already. Let’s have a show of hands. How many of you have worked with on an application recently that persists data into a relational database? OK, how many of you used SQL <transition> to do it? How many of you have worked on an application that uses some form of Ajax functionality? How many of you used JavaScript <transition> to do it? How many of you have configured a Spring or Java EE application or worked with some form of web services recently? How many of you ended up in an <transition> XML document? Written a web page? Used <transition> HTML? How many of you have automated your application build, packaging, testing, and/or deployment? How many of you used <transition> Ant or Maven to do it? Ant and Maven aren’t languages per se, yet the use XML to define a domain-specific language for these types of tasks. So why aren’t we resistant to using some combination of these languages in addition to Java? I would argue that...
  8. ...you’re really doing this already. Let’s have a show of hands. How many of you have worked with on an application recently that persists data into a relational database? OK, how many of you used SQL <transition> to do it? How many of you have worked on an application that uses some form of Ajax functionality? How many of you used JavaScript <transition> to do it? How many of you have configured a Spring or Java EE application or worked with some form of web services recently? How many of you ended up in an <transition> XML document? Written a web page? Used <transition> HTML? How many of you have automated your application build, packaging, testing, and/or deployment? How many of you used <transition> Ant or Maven to do it? Ant and Maven aren’t languages per se, yet the use XML to define a domain-specific language for these types of tasks. So why aren’t we resistant to using some combination of these languages in addition to Java? I would argue that...
  9. ...you’re really doing this already. Let’s have a show of hands. How many of you have worked with on an application recently that persists data into a relational database? OK, how many of you used SQL <transition> to do it? How many of you have worked on an application that uses some form of Ajax functionality? How many of you used JavaScript <transition> to do it? How many of you have configured a Spring or Java EE application or worked with some form of web services recently? How many of you ended up in an <transition> XML document? Written a web page? Used <transition> HTML? How many of you have automated your application build, packaging, testing, and/or deployment? How many of you used <transition> Ant or Maven to do it? Ant and Maven aren’t languages per se, yet the use XML to define a domain-specific language for these types of tasks. So why aren’t we resistant to using some combination of these languages in addition to Java? I would argue that...
  10. ..the adoption of these additional languages, just like the adoption of Java, C++ before it, and C before that, is driven by critical mass being reached in an area of business or technical demand. Let’s examine each of the languages that we just discussed and understand what drove their adoption...
  11. SQL - around the time that our industry started developing relational database systems to increase the accuracy and efficiency with which we stored and accessed large amounts of business data, SQL was developed as declarative language that described the expected results of an operation within a relational database management system without specifying the details of the implementation of that operation. Sounds an awful lot like a Domain Specific Language for databases to me. This allowed developers to “in theory” implement write once, run anywhere at the database level - your VM is your database platform, be it Oracle, MySQL, PostgreSQL, etc. SQL was the “killer app” for the RDBMS world. JavaScript - for years JavaScript was a “toy” language for most developers. We searched HotScripts.com for something that would disable right-clicks, do form validation, etc. We copied and pasted code, hacked around with it, and basically ignored all of the software development principles that we adhered to when we wrote our “real” code in Java. Then this big company named Google released their Maps application to the world and we’ve never been the same sense. Now our clients are saying “why can’t we do stuff like that?” We became forced to learn JavaScript as a real language and guess what - we found out it’s a pretty powerful beast. We’re even implementing the entire client-side of applications with it. The arrival of the so-called “Web 2.0/Ajax” pushed us. XML - you can argue that XML was mostly pushed on us. For years developers have searched for a silver bullet solution to the problem of universal data interchange between dissimilar systems. XML was at its birth the latest incarnation of the proposed silver bullet. While we’ve continued to argue about whether or not it does the job, a few forward thinking individuals decided “Wow, isn’t this a great way to configure frameworks and applications?” Thus was born ejb-jar.xml, struts-config.xml, and applicationContext.xml. While all of these are slowly eroding away in favor of annotation-based configuration, at the time if you wanted to use EJB, Spring, or one of the 100’s of web frameworks out there, you had to get familiar with XML. HTML - this one’s pretty much a no-brainer. In the late 1990’s, the world wide web became uber-hot, and we eventually decided we wanted to use it for more than just fancy “under construction” graphics. We decided we needed to build web applications! So, since HTML was the lingua franca of the web world, we coders had to learn it to be relevant in the web application age. Ant/Maven - those of you who’ve ever compiled anything more than the most trivial of C or C++ programs know all about make. Now it’s entirely true that you can use make to built Java programs, and as Sun was building the reference implementation of the Servlet specification, which later became Apache Tomcat, they were using a proprietary version of make to do it on the Solaris platform. However, when they wanted to go open source, there was no way of controlling which platform was used to build Tomcat. Ant was created as a simple, platform independent tool to build Tomcat from directives in an XML “build file.” It was actually released as a standalone product as a bit of an afterthought....but it filled a huge void and is now the build tool used by most Java projects today. Maven is now evolving as the heir apparent to Ant, taking project builds to a higher-level of abstraction than Ant allows. The point is, whether it was the lack of a tool for a particular problem or the need for a better or more appropriate tool, something has driven us to the point where we’ve been willing to add another language to our toolkit that isn’t our core language.
  12. SQL - around the time that our industry started developing relational database systems to increase the accuracy and efficiency with which we stored and accessed large amounts of business data, SQL was developed as declarative language that described the expected results of an operation within a relational database management system without specifying the details of the implementation of that operation. Sounds an awful lot like a Domain Specific Language for databases to me. This allowed developers to “in theory” implement write once, run anywhere at the database level - your VM is your database platform, be it Oracle, MySQL, PostgreSQL, etc. SQL was the “killer app” for the RDBMS world. JavaScript - for years JavaScript was a “toy” language for most developers. We searched HotScripts.com for something that would disable right-clicks, do form validation, etc. We copied and pasted code, hacked around with it, and basically ignored all of the software development principles that we adhered to when we wrote our “real” code in Java. Then this big company named Google released their Maps application to the world and we’ve never been the same sense. Now our clients are saying “why can’t we do stuff like that?” We became forced to learn JavaScript as a real language and guess what - we found out it’s a pretty powerful beast. We’re even implementing the entire client-side of applications with it. The arrival of the so-called “Web 2.0/Ajax” pushed us. XML - you can argue that XML was mostly pushed on us. For years developers have searched for a silver bullet solution to the problem of universal data interchange between dissimilar systems. XML was at its birth the latest incarnation of the proposed silver bullet. While we’ve continued to argue about whether or not it does the job, a few forward thinking individuals decided “Wow, isn’t this a great way to configure frameworks and applications?” Thus was born ejb-jar.xml, struts-config.xml, and applicationContext.xml. While all of these are slowly eroding away in favor of annotation-based configuration, at the time if you wanted to use EJB, Spring, or one of the 100’s of web frameworks out there, you had to get familiar with XML. HTML - this one’s pretty much a no-brainer. In the late 1990’s, the world wide web became uber-hot, and we eventually decided we wanted to use it for more than just fancy “under construction” graphics. We decided we needed to build web applications! So, since HTML was the lingua franca of the web world, we coders had to learn it to be relevant in the web application age. Ant/Maven - those of you who’ve ever compiled anything more than the most trivial of C or C++ programs know all about make. Now it’s entirely true that you can use make to built Java programs, and as Sun was building the reference implementation of the Servlet specification, which later became Apache Tomcat, they were using a proprietary version of make to do it on the Solaris platform. However, when they wanted to go open source, there was no way of controlling which platform was used to build Tomcat. Ant was created as a simple, platform independent tool to build Tomcat from directives in an XML “build file.” It was actually released as a standalone product as a bit of an afterthought....but it filled a huge void and is now the build tool used by most Java projects today. Maven is now evolving as the heir apparent to Ant, taking project builds to a higher-level of abstraction than Ant allows. The point is, whether it was the lack of a tool for a particular problem or the need for a better or more appropriate tool, something has driven us to the point where we’ve been willing to add another language to our toolkit that isn’t our core language.
  13. SQL - around the time that our industry started developing relational database systems to increase the accuracy and efficiency with which we stored and accessed large amounts of business data, SQL was developed as declarative language that described the expected results of an operation within a relational database management system without specifying the details of the implementation of that operation. Sounds an awful lot like a Domain Specific Language for databases to me. This allowed developers to “in theory” implement write once, run anywhere at the database level - your VM is your database platform, be it Oracle, MySQL, PostgreSQL, etc. SQL was the “killer app” for the RDBMS world. JavaScript - for years JavaScript was a “toy” language for most developers. We searched HotScripts.com for something that would disable right-clicks, do form validation, etc. We copied and pasted code, hacked around with it, and basically ignored all of the software development principles that we adhered to when we wrote our “real” code in Java. Then this big company named Google released their Maps application to the world and we’ve never been the same sense. Now our clients are saying “why can’t we do stuff like that?” We became forced to learn JavaScript as a real language and guess what - we found out it’s a pretty powerful beast. We’re even implementing the entire client-side of applications with it. The arrival of the so-called “Web 2.0/Ajax” pushed us. XML - you can argue that XML was mostly pushed on us. For years developers have searched for a silver bullet solution to the problem of universal data interchange between dissimilar systems. XML was at its birth the latest incarnation of the proposed silver bullet. While we’ve continued to argue about whether or not it does the job, a few forward thinking individuals decided “Wow, isn’t this a great way to configure frameworks and applications?” Thus was born ejb-jar.xml, struts-config.xml, and applicationContext.xml. While all of these are slowly eroding away in favor of annotation-based configuration, at the time if you wanted to use EJB, Spring, or one of the 100’s of web frameworks out there, you had to get familiar with XML. HTML - this one’s pretty much a no-brainer. In the late 1990’s, the world wide web became uber-hot, and we eventually decided we wanted to use it for more than just fancy “under construction” graphics. We decided we needed to build web applications! So, since HTML was the lingua franca of the web world, we coders had to learn it to be relevant in the web application age. Ant/Maven - those of you who’ve ever compiled anything more than the most trivial of C or C++ programs know all about make. Now it’s entirely true that you can use make to built Java programs, and as Sun was building the reference implementation of the Servlet specification, which later became Apache Tomcat, they were using a proprietary version of make to do it on the Solaris platform. However, when they wanted to go open source, there was no way of controlling which platform was used to build Tomcat. Ant was created as a simple, platform independent tool to build Tomcat from directives in an XML “build file.” It was actually released as a standalone product as a bit of an afterthought....but it filled a huge void and is now the build tool used by most Java projects today. Maven is now evolving as the heir apparent to Ant, taking project builds to a higher-level of abstraction than Ant allows. The point is, whether it was the lack of a tool for a particular problem or the need for a better or more appropriate tool, something has driven us to the point where we’ve been willing to add another language to our toolkit that isn’t our core language.
  14. SQL - around the time that our industry started developing relational database systems to increase the accuracy and efficiency with which we stored and accessed large amounts of business data, SQL was developed as declarative language that described the expected results of an operation within a relational database management system without specifying the details of the implementation of that operation. Sounds an awful lot like a Domain Specific Language for databases to me. This allowed developers to “in theory” implement write once, run anywhere at the database level - your VM is your database platform, be it Oracle, MySQL, PostgreSQL, etc. SQL was the “killer app” for the RDBMS world. JavaScript - for years JavaScript was a “toy” language for most developers. We searched HotScripts.com for something that would disable right-clicks, do form validation, etc. We copied and pasted code, hacked around with it, and basically ignored all of the software development principles that we adhered to when we wrote our “real” code in Java. Then this big company named Google released their Maps application to the world and we’ve never been the same sense. Now our clients are saying “why can’t we do stuff like that?” We became forced to learn JavaScript as a real language and guess what - we found out it’s a pretty powerful beast. We’re even implementing the entire client-side of applications with it. The arrival of the so-called “Web 2.0/Ajax” pushed us. XML - you can argue that XML was mostly pushed on us. For years developers have searched for a silver bullet solution to the problem of universal data interchange between dissimilar systems. XML was at its birth the latest incarnation of the proposed silver bullet. While we’ve continued to argue about whether or not it does the job, a few forward thinking individuals decided “Wow, isn’t this a great way to configure frameworks and applications?” Thus was born ejb-jar.xml, struts-config.xml, and applicationContext.xml. While all of these are slowly eroding away in favor of annotation-based configuration, at the time if you wanted to use EJB, Spring, or one of the 100’s of web frameworks out there, you had to get familiar with XML. HTML - this one’s pretty much a no-brainer. In the late 1990’s, the world wide web became uber-hot, and we eventually decided we wanted to use it for more than just fancy “under construction” graphics. We decided we needed to build web applications! So, since HTML was the lingua franca of the web world, we coders had to learn it to be relevant in the web application age. Ant/Maven - those of you who’ve ever compiled anything more than the most trivial of C or C++ programs know all about make. Now it’s entirely true that you can use make to built Java programs, and as Sun was building the reference implementation of the Servlet specification, which later became Apache Tomcat, they were using a proprietary version of make to do it on the Solaris platform. However, when they wanted to go open source, there was no way of controlling which platform was used to build Tomcat. Ant was created as a simple, platform independent tool to build Tomcat from directives in an XML “build file.” It was actually released as a standalone product as a bit of an afterthought....but it filled a huge void and is now the build tool used by most Java projects today. Maven is now evolving as the heir apparent to Ant, taking project builds to a higher-level of abstraction than Ant allows. The point is, whether it was the lack of a tool for a particular problem or the need for a better or more appropriate tool, something has driven us to the point where we’ve been willing to add another language to our toolkit that isn’t our core language.
  15. SQL - around the time that our industry started developing relational database systems to increase the accuracy and efficiency with which we stored and accessed large amounts of business data, SQL was developed as declarative language that described the expected results of an operation within a relational database management system without specifying the details of the implementation of that operation. Sounds an awful lot like a Domain Specific Language for databases to me. This allowed developers to “in theory” implement write once, run anywhere at the database level - your VM is your database platform, be it Oracle, MySQL, PostgreSQL, etc. SQL was the “killer app” for the RDBMS world. JavaScript - for years JavaScript was a “toy” language for most developers. We searched HotScripts.com for something that would disable right-clicks, do form validation, etc. We copied and pasted code, hacked around with it, and basically ignored all of the software development principles that we adhered to when we wrote our “real” code in Java. Then this big company named Google released their Maps application to the world and we’ve never been the same sense. Now our clients are saying “why can’t we do stuff like that?” We became forced to learn JavaScript as a real language and guess what - we found out it’s a pretty powerful beast. We’re even implementing the entire client-side of applications with it. The arrival of the so-called “Web 2.0/Ajax” pushed us. XML - you can argue that XML was mostly pushed on us. For years developers have searched for a silver bullet solution to the problem of universal data interchange between dissimilar systems. XML was at its birth the latest incarnation of the proposed silver bullet. While we’ve continued to argue about whether or not it does the job, a few forward thinking individuals decided “Wow, isn’t this a great way to configure frameworks and applications?” Thus was born ejb-jar.xml, struts-config.xml, and applicationContext.xml. While all of these are slowly eroding away in favor of annotation-based configuration, at the time if you wanted to use EJB, Spring, or one of the 100’s of web frameworks out there, you had to get familiar with XML. HTML - this one’s pretty much a no-brainer. In the late 1990’s, the world wide web became uber-hot, and we eventually decided we wanted to use it for more than just fancy “under construction” graphics. We decided we needed to build web applications! So, since HTML was the lingua franca of the web world, we coders had to learn it to be relevant in the web application age. Ant/Maven - those of you who’ve ever compiled anything more than the most trivial of C or C++ programs know all about make. Now it’s entirely true that you can use make to built Java programs, and as Sun was building the reference implementation of the Servlet specification, which later became Apache Tomcat, they were using a proprietary version of make to do it on the Solaris platform. However, when they wanted to go open source, there was no way of controlling which platform was used to build Tomcat. Ant was created as a simple, platform independent tool to build Tomcat from directives in an XML “build file.” It was actually released as a standalone product as a bit of an afterthought....but it filled a huge void and is now the build tool used by most Java projects today. Maven is now evolving as the heir apparent to Ant, taking project builds to a higher-level of abstraction than Ant allows. The point is, whether it was the lack of a tool for a particular problem or the need for a better or more appropriate tool, something has driven us to the point where we’ve been willing to add another language to our toolkit that isn’t our core language.
  16. SQL - around the time that our industry started developing relational database systems to increase the accuracy and efficiency with which we stored and accessed large amounts of business data, SQL was developed as declarative language that described the expected results of an operation within a relational database management system without specifying the details of the implementation of that operation. Sounds an awful lot like a Domain Specific Language for databases to me. This allowed developers to “in theory” implement write once, run anywhere at the database level - your VM is your database platform, be it Oracle, MySQL, PostgreSQL, etc. SQL was the “killer app” for the RDBMS world. JavaScript - for years JavaScript was a “toy” language for most developers. We searched HotScripts.com for something that would disable right-clicks, do form validation, etc. We copied and pasted code, hacked around with it, and basically ignored all of the software development principles that we adhered to when we wrote our “real” code in Java. Then this big company named Google released their Maps application to the world and we’ve never been the same sense. Now our clients are saying “why can’t we do stuff like that?” We became forced to learn JavaScript as a real language and guess what - we found out it’s a pretty powerful beast. We’re even implementing the entire client-side of applications with it. The arrival of the so-called “Web 2.0/Ajax” pushed us. XML - you can argue that XML was mostly pushed on us. For years developers have searched for a silver bullet solution to the problem of universal data interchange between dissimilar systems. XML was at its birth the latest incarnation of the proposed silver bullet. While we’ve continued to argue about whether or not it does the job, a few forward thinking individuals decided “Wow, isn’t this a great way to configure frameworks and applications?” Thus was born ejb-jar.xml, struts-config.xml, and applicationContext.xml. While all of these are slowly eroding away in favor of annotation-based configuration, at the time if you wanted to use EJB, Spring, or one of the 100’s of web frameworks out there, you had to get familiar with XML. HTML - this one’s pretty much a no-brainer. In the late 1990’s, the world wide web became uber-hot, and we eventually decided we wanted to use it for more than just fancy “under construction” graphics. We decided we needed to build web applications! So, since HTML was the lingua franca of the web world, we coders had to learn it to be relevant in the web application age. Ant/Maven - those of you who’ve ever compiled anything more than the most trivial of C or C++ programs know all about make. Now it’s entirely true that you can use make to built Java programs, and as Sun was building the reference implementation of the Servlet specification, which later became Apache Tomcat, they were using a proprietary version of make to do it on the Solaris platform. However, when they wanted to go open source, there was no way of controlling which platform was used to build Tomcat. Ant was created as a simple, platform independent tool to build Tomcat from directives in an XML “build file.” It was actually released as a standalone product as a bit of an afterthought....but it filled a huge void and is now the build tool used by most Java projects today. Maven is now evolving as the heir apparent to Ant, taking project builds to a higher-level of abstraction than Ant allows. The point is, whether it was the lack of a tool for a particular problem or the need for a better or more appropriate tool, something has driven us to the point where we’ve been willing to add another language to our toolkit that isn’t our core language.
  17. SQL - around the time that our industry started developing relational database systems to increase the accuracy and efficiency with which we stored and accessed large amounts of business data, SQL was developed as declarative language that described the expected results of an operation within a relational database management system without specifying the details of the implementation of that operation. Sounds an awful lot like a Domain Specific Language for databases to me. This allowed developers to “in theory” implement write once, run anywhere at the database level - your VM is your database platform, be it Oracle, MySQL, PostgreSQL, etc. SQL was the “killer app” for the RDBMS world. JavaScript - for years JavaScript was a “toy” language for most developers. We searched HotScripts.com for something that would disable right-clicks, do form validation, etc. We copied and pasted code, hacked around with it, and basically ignored all of the software development principles that we adhered to when we wrote our “real” code in Java. Then this big company named Google released their Maps application to the world and we’ve never been the same sense. Now our clients are saying “why can’t we do stuff like that?” We became forced to learn JavaScript as a real language and guess what - we found out it’s a pretty powerful beast. We’re even implementing the entire client-side of applications with it. The arrival of the so-called “Web 2.0/Ajax” pushed us. XML - you can argue that XML was mostly pushed on us. For years developers have searched for a silver bullet solution to the problem of universal data interchange between dissimilar systems. XML was at its birth the latest incarnation of the proposed silver bullet. While we’ve continued to argue about whether or not it does the job, a few forward thinking individuals decided “Wow, isn’t this a great way to configure frameworks and applications?” Thus was born ejb-jar.xml, struts-config.xml, and applicationContext.xml. While all of these are slowly eroding away in favor of annotation-based configuration, at the time if you wanted to use EJB, Spring, or one of the 100’s of web frameworks out there, you had to get familiar with XML. HTML - this one’s pretty much a no-brainer. In the late 1990’s, the world wide web became uber-hot, and we eventually decided we wanted to use it for more than just fancy “under construction” graphics. We decided we needed to build web applications! So, since HTML was the lingua franca of the web world, we coders had to learn it to be relevant in the web application age. Ant/Maven - those of you who’ve ever compiled anything more than the most trivial of C or C++ programs know all about make. Now it’s entirely true that you can use make to built Java programs, and as Sun was building the reference implementation of the Servlet specification, which later became Apache Tomcat, they were using a proprietary version of make to do it on the Solaris platform. However, when they wanted to go open source, there was no way of controlling which platform was used to build Tomcat. Ant was created as a simple, platform independent tool to build Tomcat from directives in an XML “build file.” It was actually released as a standalone product as a bit of an afterthought....but it filled a huge void and is now the build tool used by most Java projects today. Maven is now evolving as the heir apparent to Ant, taking project builds to a higher-level of abstraction than Ant allows. The point is, whether it was the lack of a tool for a particular problem or the need for a better or more appropriate tool, something has driven us to the point where we’ve been willing to add another language to our toolkit that isn’t our core language.
  18. SQL - around the time that our industry started developing relational database systems to increase the accuracy and efficiency with which we stored and accessed large amounts of business data, SQL was developed as declarative language that described the expected results of an operation within a relational database management system without specifying the details of the implementation of that operation. Sounds an awful lot like a Domain Specific Language for databases to me. This allowed developers to “in theory” implement write once, run anywhere at the database level - your VM is your database platform, be it Oracle, MySQL, PostgreSQL, etc. SQL was the “killer app” for the RDBMS world. JavaScript - for years JavaScript was a “toy” language for most developers. We searched HotScripts.com for something that would disable right-clicks, do form validation, etc. We copied and pasted code, hacked around with it, and basically ignored all of the software development principles that we adhered to when we wrote our “real” code in Java. Then this big company named Google released their Maps application to the world and we’ve never been the same sense. Now our clients are saying “why can’t we do stuff like that?” We became forced to learn JavaScript as a real language and guess what - we found out it’s a pretty powerful beast. We’re even implementing the entire client-side of applications with it. The arrival of the so-called “Web 2.0/Ajax” pushed us. XML - you can argue that XML was mostly pushed on us. For years developers have searched for a silver bullet solution to the problem of universal data interchange between dissimilar systems. XML was at its birth the latest incarnation of the proposed silver bullet. While we’ve continued to argue about whether or not it does the job, a few forward thinking individuals decided “Wow, isn’t this a great way to configure frameworks and applications?” Thus was born ejb-jar.xml, struts-config.xml, and applicationContext.xml. While all of these are slowly eroding away in favor of annotation-based configuration, at the time if you wanted to use EJB, Spring, or one of the 100’s of web frameworks out there, you had to get familiar with XML. HTML - this one’s pretty much a no-brainer. In the late 1990’s, the world wide web became uber-hot, and we eventually decided we wanted to use it for more than just fancy “under construction” graphics. We decided we needed to build web applications! So, since HTML was the lingua franca of the web world, we coders had to learn it to be relevant in the web application age. Ant/Maven - those of you who’ve ever compiled anything more than the most trivial of C or C++ programs know all about make. Now it’s entirely true that you can use make to built Java programs, and as Sun was building the reference implementation of the Servlet specification, which later became Apache Tomcat, they were using a proprietary version of make to do it on the Solaris platform. However, when they wanted to go open source, there was no way of controlling which platform was used to build Tomcat. Ant was created as a simple, platform independent tool to build Tomcat from directives in an XML “build file.” It was actually released as a standalone product as a bit of an afterthought....but it filled a huge void and is now the build tool used by most Java projects today. Maven is now evolving as the heir apparent to Ant, taking project builds to a higher-level of abstraction than Ant allows. The point is, whether it was the lack of a tool for a particular problem or the need for a better or more appropriate tool, something has driven us to the point where we’ve been willing to add another language to our toolkit that isn’t our core language.
  19. SQL - around the time that our industry started developing relational database systems to increase the accuracy and efficiency with which we stored and accessed large amounts of business data, SQL was developed as declarative language that described the expected results of an operation within a relational database management system without specifying the details of the implementation of that operation. Sounds an awful lot like a Domain Specific Language for databases to me. This allowed developers to “in theory” implement write once, run anywhere at the database level - your VM is your database platform, be it Oracle, MySQL, PostgreSQL, etc. SQL was the “killer app” for the RDBMS world. JavaScript - for years JavaScript was a “toy” language for most developers. We searched HotScripts.com for something that would disable right-clicks, do form validation, etc. We copied and pasted code, hacked around with it, and basically ignored all of the software development principles that we adhered to when we wrote our “real” code in Java. Then this big company named Google released their Maps application to the world and we’ve never been the same sense. Now our clients are saying “why can’t we do stuff like that?” We became forced to learn JavaScript as a real language and guess what - we found out it’s a pretty powerful beast. We’re even implementing the entire client-side of applications with it. The arrival of the so-called “Web 2.0/Ajax” pushed us. XML - you can argue that XML was mostly pushed on us. For years developers have searched for a silver bullet solution to the problem of universal data interchange between dissimilar systems. XML was at its birth the latest incarnation of the proposed silver bullet. While we’ve continued to argue about whether or not it does the job, a few forward thinking individuals decided “Wow, isn’t this a great way to configure frameworks and applications?” Thus was born ejb-jar.xml, struts-config.xml, and applicationContext.xml. While all of these are slowly eroding away in favor of annotation-based configuration, at the time if you wanted to use EJB, Spring, or one of the 100’s of web frameworks out there, you had to get familiar with XML. HTML - this one’s pretty much a no-brainer. In the late 1990’s, the world wide web became uber-hot, and we eventually decided we wanted to use it for more than just fancy “under construction” graphics. We decided we needed to build web applications! So, since HTML was the lingua franca of the web world, we coders had to learn it to be relevant in the web application age. Ant/Maven - those of you who’ve ever compiled anything more than the most trivial of C or C++ programs know all about make. Now it’s entirely true that you can use make to built Java programs, and as Sun was building the reference implementation of the Servlet specification, which later became Apache Tomcat, they were using a proprietary version of make to do it on the Solaris platform. However, when they wanted to go open source, there was no way of controlling which platform was used to build Tomcat. Ant was created as a simple, platform independent tool to build Tomcat from directives in an XML “build file.” It was actually released as a standalone product as a bit of an afterthought....but it filled a huge void and is now the build tool used by most Java projects today. Maven is now evolving as the heir apparent to Ant, taking project builds to a higher-level of abstraction than Ant allows. The point is, whether it was the lack of a tool for a particular problem or the need for a better or more appropriate tool, something has driven us to the point where we’ve been willing to add another language to our toolkit that isn’t our core language.
  20. SQL - around the time that our industry started developing relational database systems to increase the accuracy and efficiency with which we stored and accessed large amounts of business data, SQL was developed as declarative language that described the expected results of an operation within a relational database management system without specifying the details of the implementation of that operation. Sounds an awful lot like a Domain Specific Language for databases to me. This allowed developers to “in theory” implement write once, run anywhere at the database level - your VM is your database platform, be it Oracle, MySQL, PostgreSQL, etc. SQL was the “killer app” for the RDBMS world. JavaScript - for years JavaScript was a “toy” language for most developers. We searched HotScripts.com for something that would disable right-clicks, do form validation, etc. We copied and pasted code, hacked around with it, and basically ignored all of the software development principles that we adhered to when we wrote our “real” code in Java. Then this big company named Google released their Maps application to the world and we’ve never been the same sense. Now our clients are saying “why can’t we do stuff like that?” We became forced to learn JavaScript as a real language and guess what - we found out it’s a pretty powerful beast. We’re even implementing the entire client-side of applications with it. The arrival of the so-called “Web 2.0/Ajax” pushed us. XML - you can argue that XML was mostly pushed on us. For years developers have searched for a silver bullet solution to the problem of universal data interchange between dissimilar systems. XML was at its birth the latest incarnation of the proposed silver bullet. While we’ve continued to argue about whether or not it does the job, a few forward thinking individuals decided “Wow, isn’t this a great way to configure frameworks and applications?” Thus was born ejb-jar.xml, struts-config.xml, and applicationContext.xml. While all of these are slowly eroding away in favor of annotation-based configuration, at the time if you wanted to use EJB, Spring, or one of the 100’s of web frameworks out there, you had to get familiar with XML. HTML - this one’s pretty much a no-brainer. In the late 1990’s, the world wide web became uber-hot, and we eventually decided we wanted to use it for more than just fancy “under construction” graphics. We decided we needed to build web applications! So, since HTML was the lingua franca of the web world, we coders had to learn it to be relevant in the web application age. Ant/Maven - those of you who’ve ever compiled anything more than the most trivial of C or C++ programs know all about make. Now it’s entirely true that you can use make to built Java programs, and as Sun was building the reference implementation of the Servlet specification, which later became Apache Tomcat, they were using a proprietary version of make to do it on the Solaris platform. However, when they wanted to go open source, there was no way of controlling which platform was used to build Tomcat. Ant was created as a simple, platform independent tool to build Tomcat from directives in an XML “build file.” It was actually released as a standalone product as a bit of an afterthought....but it filled a huge void and is now the build tool used by most Java projects today. Maven is now evolving as the heir apparent to Ant, taking project builds to a higher-level of abstraction than Ant allows. The point is, whether it was the lack of a tool for a particular problem or the need for a better or more appropriate tool, something has driven us to the point where we’ve been willing to add another language to our toolkit that isn’t our core language.
  21. So here are some of the leading candidates to be “core” polyglot languages of the future on the JVM. Clojure is a dynamically-typed, functional language based on LISP. Jython is the JVM implementation of Python. Groovy is a dynamically-typed language with a simple, Java-like syntax that was born on the JVM. JRuby is the JVM implementation of Ruby. Scala is a statically-typed, multiparadigm language that merges object-oriented and functional concepts into a single, “scalable” language. What are the factors driving us toward adopting one or more of these languages, and which ones are approaching critical mass?
  22. So here are some of the leading candidates to be “core” polyglot languages of the future on the JVM. Clojure is a dynamically-typed, functional language based on LISP. Jython is the JVM implementation of Python. Groovy is a dynamically-typed language with a simple, Java-like syntax that was born on the JVM. JRuby is the JVM implementation of Ruby. Scala is a statically-typed, multiparadigm language that merges object-oriented and functional concepts into a single, “scalable” language. What are the factors driving us toward adopting one or more of these languages, and which ones are approaching critical mass?
  23. So here are some of the leading candidates to be “core” polyglot languages of the future on the JVM. Clojure is a dynamically-typed, functional language based on LISP. Jython is the JVM implementation of Python. Groovy is a dynamically-typed language with a simple, Java-like syntax that was born on the JVM. JRuby is the JVM implementation of Ruby. Scala is a statically-typed, multiparadigm language that merges object-oriented and functional concepts into a single, “scalable” language. What are the factors driving us toward adopting one or more of these languages, and which ones are approaching critical mass?
  24. So here are some of the leading candidates to be “core” polyglot languages of the future on the JVM. Clojure is a dynamically-typed, functional language based on LISP. Jython is the JVM implementation of Python. Groovy is a dynamically-typed language with a simple, Java-like syntax that was born on the JVM. JRuby is the JVM implementation of Ruby. Scala is a statically-typed, multiparadigm language that merges object-oriented and functional concepts into a single, “scalable” language. What are the factors driving us toward adopting one or more of these languages, and which ones are approaching critical mass?
  25. So here are some of the leading candidates to be “core” polyglot languages of the future on the JVM. Clojure is a dynamically-typed, functional language based on LISP. Jython is the JVM implementation of Python. Groovy is a dynamically-typed language with a simple, Java-like syntax that was born on the JVM. JRuby is the JVM implementation of Ruby. Scala is a statically-typed, multiparadigm language that merges object-oriented and functional concepts into a single, “scalable” language. What are the factors driving us toward adopting one or more of these languages, and which ones are approaching critical mass?