Upload
eduardo-pelegri-llopart
View
1.363
Download
0
Tags:
Embed Size (px)
DESCRIPTION
A 1 hour presentation of how GlassFish v3 Prelude provides support for Scripting / Dynamic Languages. Ruby/JRuby/Rails and Groovy/Grails are specifically described.
Citation preview
1
Dynamic Languages in GlassFish v3 PreludeGlassFish Webinar
Vivek PandeyDeveloper, Glassfish TeamSun Microsysems, Inc.
1
2
3
GlassFish v3 - A Dynamic AppServerProductivity, performance
• GlassFish v3> Lightweight, Modular, Extensible, Embeddable
• Reasonable and efficient deployment choice> Native, WAR style, embedded GlassFish
• App Server feature for everyone> Database connection pooling> Native threading, non-blocking IO, ARP> Management – Monitor, Deploy, Troubleshooting> Access to enterprise stack
– Metro, Jersey, JMS/MQ, Grizzly, JBI etc.
4
Overall Architecture
5
JRuby on Rails
6
Why Ruby on GlassFish?
• GlassFish v3 server is tested platform> Co-host Java and Rails> Known Deployment and Management
• “Green” alternative – One command, One instance, One process• Multiple Requests by a Single Application• Database Connection Pooling• Not just Rails – Merb, Sinatra...
7
More benefits...• No packaging, simple deployment> asadmin deploy depot/
• Deploy as WAR> warble #creates WAR file> asadmin deploy depot.war
• Tested JRuby runtime at Updatecenter> bin/updatetool> No more config needed
• Commercially supported by Sun• http://wiki.glassfish.java.net/Wiki.jsp?page=GettingStartedGuide
8
GlassFish v3 Runtime
Grizzly Listener
RailsAdapter
WebAdapter
XXXAdapter
RuntimePool
JRuby
Rails
.
.
.
9
Runtime Pool Management• Automatic JRuby runtime pool management
CreateJRuby
RuntimeGem
Startup
Load RailsEnvironment
JRuby
Rails
JRuby
RailsAdd to Runtime
Pool
10
Configuring JRuby Runtime Pool• On GlassFish v3 Prelude Server> System properties
– -Djruby.runtime.min : Sets the fewest runtimes to have in the pool
– -Djruby.runtime : Sets the initial number of runtimes to create– -Djruby.runtime.max : Sets the maximum number of runtimes to
have active> Add these system properties as <jvm-options> elements
inside domain.xml> Or, if using java CLI simply provide it using -D option
– java -Djruby.home=... -Djruby.runtime.max=2 -jar modules/glassfish.jar
11
Configuring JRuby Runtime Pool• GlassFish gem> CLI options
– -n, --runtimes – Number of JRuby runtimes to crete initially
– --runtimes-min – Minimum JRuby runtimes to crete
– --runtimes-max – Maximum number of JRuby runtimes to crete
> glassfish -n 2 –runtimes-min 1 –runtimes-max 6– Starts glassfish gem with 2 JRuby runtimes, the minimum pool
size is 1 and maximum size it can grow up to is 6
12
JRuby Bundle - Updatecenter• glassfish-install/bin/updatetool
13
NetBeans Tooling• NetBeans support> Develop, deploy debug> Screencast
– http://weblogs.java.net/blog/arungupta/archive/2008/11/screencast_26_d.html
14
GlassFish gem• Rails developer friendly• Based on GlassFish v3 nucleus• Distributed as ruby gem• Install> gem install glassfish
• Run> cd myAp> glassfish
• More info> http://glassfishgem.rubyforge.org/
15
GlassFish Gem• Latest 0.9.0 released• Features> Rack based architecture
– Pluggable ruby frameworks> Merb support
– JRuby and Merb native extension issue $jruby -S gem install merb-core merb-more $merb-gen core hello $cd hello $glassfish
• Framework auto-detection> Need just one command 'glassfish'
• Details at: http://glassfishgems.rubyforge.org/
16
Demo – GlassFish Gem• Demo screencast> http://mediacast.sun.com/users/vivek.pandey/media/gemdemo
17
Groovy on Grails
18
Groovy on Grails• An MVC frameworks• Based on Groovy, Spring, Hibernate, SiteMesh> But hides all the complexity
• Adopts Rails paradigms
19
Grails – Setup and Installation• Install Grails IPS package using updatetool> Grails package is installed inside 'glassfish' directory
• Grails IPS package> Provides the following benefits over Grails distributions
found elsewhere– grails shaed-war
– Lightweight, efficient application WAR– Less prone to OOM due to lack of PermGen space on hot deployments
– grails run-app– Runs GlassFish v3 Prelude in embedded mode– Develop and test your grails app on the same server you would deploy
during production
• Set GRAILS_HOME environment variable> export GRAILS_HOME=glassfish-install/grails
20
Groovy on Grails - Updatecenter• glassfish-install/bin/updatetool
21
Groovy on Grails• Development and production on the same server > Develop using GlassFish v3 embedded server
– grails run-app
22
Groovy on Grails• Development and production on the same server > Develop using GlassFish v3 embedded server
– grails run-app
> Production deployment– asadmin deploy grailsApp.war
23
Groovy on Grails• Development and production on the same server > Develop using GlassFish v3 embedded server
– grails run-app
> Production deployment– asadmin deploy grailsApp.war
• Efficient WAR packaging> grails shared-war
– Creates smaller WARs ~200KB vs 18MB– asadmin deploy –-libraries $GRAILS_HOME/lib/glassfish-grails.jar grailsApp.war
24
Groovy on Grails• Development and production on the same server > Develop using GlassFish v3 embedded server
– grails run-app
> Production deployment– asadmin deploy grailsApp.war
• Efficient WAR packaging> grails shared-war
– Creates smaller WARs ~200KB vs 18MB– asadmin deploy –-libraries $GRAILS_HOME/lib/glassfish-grails grailsApp.war
• For details> http://wiki.glassfish.java.net/Wiki.jsp?page=GrailsGettingStarted
25
Groovy on Grails – Screencast• From Zero to Grails in 5 minutes with GlassFish v3 Prelude> https://slx.sun.com/1179271912
26
Jython on Django• Jython 2.5 nearing release> Jython 2.5 beta out> Being developed at
– http://www.jython.org/Project/• Currently WAR deployment approach> Using Django-Jython project
– http://django-jython.googlecode.com/• Native Django application deployment in works
27
PHP
28
PHP• Quercus (Caucho)> Open Source (GPL) PHP 5 implementation in Java> WAR packaging> WordPress, MediaWiki, phpBB, Joomla
• PHP/Java Bridge> Open Source (LGPL)> XML based network protocol for native PHP> Faster, easier than JNI> Java native threads used for concurrent requests> PHP and JSP session sharing
29
Scala on Lift
30
Scala on Lift• Lifts apps packaged as WAR
> asadmin deploy liftApp.war
• For details on developing and deploying Lift applications see> http://wiki.glassfish.java.net/Wiki.jsp?page=GettingStartedWithLiftOnGlassFish
31
References• GlassFish> https://glassfish.dev.java.net
• GlassFish Scripting Project> https://glassfish-scripting.dev.java.net
• Scripting Wiki> http://wiki.glassfish.java.net/Wiki.jsp?page=Scripting
• Mailing List> [email protected]
• IssueTracker> https://glassfish.dev.java.net/servlets/ProjectIssues
• TheAquarium> http://blogs.sun.com/theaquarium
32
Q&A