32
1 Dynamic Languages in GlassFish v3 Prelude GlassFish Webinar Vivek Pandey Developer, Glassfish Team Sun Microsysems, Inc. 1

Scripting Support in GFv3 Prelude - Full Version

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

Page 1: Scripting Support in GFv3 Prelude - Full Version

1

Dynamic Languages in GlassFish v3 PreludeGlassFish Webinar

Vivek PandeyDeveloper, Glassfish TeamSun Microsysems, Inc.

1

Page 2: Scripting Support in GFv3 Prelude - Full Version

2

Page 3: Scripting Support in GFv3 Prelude - Full Version

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.

Page 4: Scripting Support in GFv3 Prelude - Full Version

4

Overall Architecture

Page 5: Scripting Support in GFv3 Prelude - Full Version

5

JRuby on Rails

Page 6: Scripting Support in GFv3 Prelude - Full Version

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...

Page 7: Scripting Support in GFv3 Prelude - Full Version

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

Page 8: Scripting Support in GFv3 Prelude - Full Version

8

GlassFish v3 Runtime

Grizzly Listener

RailsAdapter

WebAdapter

XXXAdapter

RuntimePool

JRuby

Rails

.

.

.

Page 9: Scripting Support in GFv3 Prelude - Full Version

9

Runtime Pool Management• Automatic JRuby runtime pool management

CreateJRuby

RuntimeGem

Startup

Load RailsEnvironment

JRuby

Rails

JRuby

RailsAdd to Runtime

Pool

Page 10: Scripting Support in GFv3 Prelude - Full Version

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

Page 11: Scripting Support in GFv3 Prelude - Full Version

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

Page 12: Scripting Support in GFv3 Prelude - Full Version

12

JRuby Bundle - Updatecenter• glassfish-install/bin/updatetool

Page 13: Scripting Support in GFv3 Prelude - Full Version

13

NetBeans Tooling• NetBeans support> Develop, deploy debug> Screencast

– http://weblogs.java.net/blog/arungupta/archive/2008/11/screencast_26_d.html

Page 14: Scripting Support in GFv3 Prelude - Full Version

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/

Page 15: Scripting Support in GFv3 Prelude - Full Version

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/

Page 16: Scripting Support in GFv3 Prelude - Full Version

16

Demo – GlassFish Gem• Demo screencast> http://mediacast.sun.com/users/vivek.pandey/media/gemdemo

Page 17: Scripting Support in GFv3 Prelude - Full Version

17

Groovy on Grails

Page 18: Scripting Support in GFv3 Prelude - Full Version

18

Groovy on Grails• An MVC frameworks• Based on Groovy, Spring, Hibernate, SiteMesh> But hides all the complexity

• Adopts Rails paradigms

Page 19: Scripting Support in GFv3 Prelude - Full Version

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

Page 20: Scripting Support in GFv3 Prelude - Full Version

20

Groovy on Grails - Updatecenter• glassfish-install/bin/updatetool

Page 21: Scripting Support in GFv3 Prelude - Full Version

21

Groovy on Grails• Development and production on the same server > Develop using GlassFish v3 embedded server

– grails run-app

Page 22: Scripting Support in GFv3 Prelude - Full Version

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

Page 23: Scripting Support in GFv3 Prelude - Full Version

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

Page 24: Scripting Support in GFv3 Prelude - Full Version

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

Page 25: Scripting Support in GFv3 Prelude - Full Version

25

Groovy on Grails – Screencast• From Zero to Grails in 5 minutes with GlassFish v3 Prelude> https://slx.sun.com/1179271912

Page 26: Scripting Support in GFv3 Prelude - Full Version

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

Page 27: Scripting Support in GFv3 Prelude - Full Version

27

PHP

Page 28: Scripting Support in GFv3 Prelude - Full Version

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

Page 29: Scripting Support in GFv3 Prelude - Full Version

29

Scala on Lift

Page 30: Scripting Support in GFv3 Prelude - Full Version

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

Page 31: Scripting Support in GFv3 Prelude - Full Version

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

Page 32: Scripting Support in GFv3 Prelude - Full Version

32

Q&A