Google 应用pȝ引擎最初是?Apache Tomcat 作ؓ?webserver/servlet 容器的,但最l将切换?Jetty 上?q个军_让许多开发h员都诧异的想问:Z么要做这L改变QTomcat 有什么问题吗Q?我们获得的一ơ访?Webtide ——Jetty 背后的公司——里的这个团队的ZQ得C关于q个军_背后更详l的信息?/p>
记者: Z么Google选择Jetty作ؓ其应用系l的引擎Q而不?Tomcat 或其他的Q?/p>
Google选择Jetty的关键原因是它的体积和灵zL?在云计算里,体积的因素是很重要,如果你运行几万个Jetty的实例(Google是q样q的Q,每个server?兆,那就会省10几个G的内存(或能够给其他应用提供更多的内存)?
Jetty 被设计成了可插拔和可扩展的特性,q样Google可以高度的自定义它?他们在其中替换了他们自己的HTTP connectorQGoogle认证Q以及他们自qsession集群。也真是奇怪,q个Ҏ对于云计算来说是非常出色的Q但同时也让Jetty非常适合嵌入的讑֤中,例如手机和机盒?/blockquote>记者: 是什么促使Jetty成ؓJava里出色的servlet容器Q?/p>
我们在开发JettyӞq没有想着要把它开发成一个全功能的应用serverQ尽它是的Q。每一功能都考虑了可插拔性,所以,如果你不需要他Q你可以不把它加蝲到内存里Q把它从request 处理调用链中L。如果你不需要sessonsQ你可以把session处理器拿掉,q样你就不要费资源L回寻找session cookie了。当你每U钟都有出来上千个请求时Q这些微的查找动作的开销是非常的大的?/span>我们也ƈ没有惛_然的企图通过设计可以得到最优化的代码,我们是如同收集沙_般Q每ơ得C些h告诉我们如何才能有好的JVMs优化和垃圑֛收办法。这是真的,已经很小心的代码仍然能被优化Q最后的效果是避免创徏新的对象。例如,我们在Jetty里用ƈ行处理技术,但我们ƈ没有使用很多标准的ƈ行处理数据结构,因ؓq需要创建太多的对象。所以,只是作ؓ个例子,我们使用了双q行锁@?arraysQ而不是采用ƈ行链?listsQ这h们就能够在不创徏对象的情况下Q获得了非阻塞ƈ行效果?/blockquote>记者: 是什么Jetty成ؓ开发h员的一个有用的serverq_的(例如QtestingQ?
Jetty 已经在一些流行框架中内置了,例如GWTQscala/liftQgrailsQJruby{等Q还有很多。如果你使用了这些技术,你就直接可以用Jetty了?Jetty-maven 插g是另外一个非怼U的开发工P它能让web应用在不打包成war文g的情况下q行。源文g可以直接~辑Q在不需要把它重新放qwar文g的情况下获得试l果?Jetty嵌入式的特征让我们不再需要写通过写那些mainҎ、通过你的IDEQ调试器?profiler 来运行之cȝ无聊的事情?/blockquote>记者: Jetty在处?client-server h时有什么独特的地方吗?
Jetty 现在是一个第二代的异步处理server?q去的两q里Q我们让Jetty实现了处理异步请求的功能Q这成了它核心架构的一部分。就像其他的支持异步serlets容器一P我想Q他们会发现q个东西q不是看h的那么简单和Ҏ?我们的异步HTTP引擎被我们复用在了HTTP client 上,所以我们可以大量的降低request ?responses 消耗?/span>同时Q就像我之前提到q的Q我们的h处理器是可扩展和可插拔的Q这让web application可以被单独省略掉Q或者是单独使用Q或者是q一步扩展的application?/span>记者: 有没有其他Jetty使用的案例,大的或小的?
使用Jetty的公司有像Zimbra/YahooQ这意味着Jetty正作为web mail 服务器,为百万的用h供服务?Eclipse IDE把它内置了进去,q意味着有成百万的开发者在桌面q行Jetty?Jetty?hadoop map/reduce cluster使用Q在其上有几千个点的集群Q处理着世界最大的TBU别的数据分cL序工作?我们也有 J2ME 的接口,有本地编译器Q所以我们可以在手机上,家用路由器和 Java cards 上运行?更多的Jetty使用的例子可以参?http://docs.codehaus.org/display/JETTY/Jetty+Powered记者: Jetty的将来或蓝图是怎样的?
Jetty 最q的计划是发?7.0.0 版本Q这会完全的迁Udeclipse foundation 下?Jetty 7 会支持很多 servlet 3.0 的特征,但是q不会用新的API ?不会依赖Java 1.6 ?Jetty 7后,很快我们会发布Jetty 8Q这会完全支持 servlet 3.0 ?Java 1.6QJetty 会l的创新 和跟t各Uweb 2.0 里的其他的新成果?我们现在已经能支?Firefox 3.5 里的跨域Ajax功能Q我们可以在cometd版本里用这个?我们很快׃增加?WebSocket ?BWTP 的支持??Google wave 以及相关协议的支持的问题已经优先排到了我们的议事日程上了?/blockquote>记者: Google/Jetty q有其他的计划吗Q?/p>
Google有他们自׃的局Q我们ƈ不清楚?我们在JavaOne大会上曾l和App Engine开发者们有个单的对话Q我们愿意听他们M的反馈和意见Q用来改qJetty的可嵌入性和可扩展性?/span>下面的跟Webtide团队的讨ZQ我们询问了SpringSource 从Jetty转换到Tomcat的事情?
记者: 你们如何看待 SpringSource ?Grails 从本来作为缺省容器的Jetty换成了Tomcat的事情?
原因是grails开发的领导感觉使用Tomcat能从内部的Tomcat开发h员哪里获得更好的”服务“。我猜测Q他们把Grails的用户驱赶到某一个^収ͼ以让SpringSource能更好的销售他们的技术支持服务。几q前我们看到了相同的事情QJBoss 雇䄦了一下tomcat开发h员后把Jetty提出成了TomcatQƈ最l和Mort Bay达成了商业合同?很遗憾,q些商业协议Ҏ术选择有如此大的媄响,当相同的是,一些基l构的工E也正聚集到也application server Z心的队伍里来?Grails会l箋同时支持对Jetty和Tomcat的集成,但会ҎTomcat为缺省服务?/span>
q看h?SpringSource使用/攀?Tomcat 的一个特别合适的论断?/p>
]]>
本篇文章原地址Q?a >http://lifeside.javaeye.com/blog/452361