|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
但是一些大型开发或者是保密型比较高的项目都会用java,原因有2点,一:java是开源的,不怕别人留后门,偷我工具,.net网页编程就不一样了,保持微软的一向风格,源代码不公开InfoQ:您能向人人疾速地归纳综合一下甚么是JCR/JSR-170吗?
DavidNuescheler(DN):我以为这个成绩可回结为对内容堆栈特征集的注释。
一般假如用一句话形貌,我老是将内容堆栈说成是,“干系数据库”和“文件体系”的“集年夜成者”,外加一切那些我们一向没有但不能不内建在我们本人使用中的好工具。
这包含如事件、伸缩性、数据库真个查询、利用超年夜文件带来的真恰好处、流、会见把持和文件体系真个条理布局,和诸如版本标定、全文检索,和二者都不撑持但十分主要的“数据优先”办法。
JCR是形貌一切这些特征的JavaAPI。
InfoQ:您对现今市场中的JCR接纳情形怎样看?
DN:当它入手下手被接纳时,我老是以为,从API的完成者和利用者两方面举行思索很主要。
起首据我懂得,在JCR初始版本公布后的仅仅两年间,就有凌驾一打的堆栈与JCRv1.0(即JSR-170)相兼容,我为此而感应冲动。只管某些堆栈如意料的那样是经由过程第三方毗连器完成这类兼容,可是年夜多半已具有了间接与JCR兼容的才能。这既包含次要的堆栈厂商,也包含一些方才面世、反动性的新堆栈。另外一个十分鼓动民气的现实是,如今已有4个JCR的开源完成,我以为这标明了完成者对标准的极年夜撑持,同时也标明该标准已具有跟其他在Java范畴内被普遍大批接纳的标准等量齐观的资历。
更主要的是,在API利用者中的接纳情形超越设想,并且我以为这是接纳过程当中更主要的一部分。在良多方面,它真正推进了大家都等候的堆栈兼并。每一个新的内容办理项目现在能够依附基于尺度现成可用的内容堆栈,而不是重新构建另外一个“他们本人的”内容堆栈。这对开辟者意味着,他们能够从项目入手下手就具有可托赖的诸如会见把持、功效完全的版本标定或全文检索等特征。每周我们都能够看到大批建构在ApacheJackrabbit上的新使用,它是会见最多的内容堆栈完成,我以为你能够绝不夸大地说,假设没有JCR,那些使用的每一个开辟者大概都已在Hibernate这类工具之上构建本人的公用内容堆栈了。
InfoQ:您的店主,Day公司怎样从中赢利呢?
DN:回到2001年,我们是在当时启动的这个JCR标准历程。我们这么做是由于短少行业尺度,并且我们以为本人次要是一个必需自行开辟内容堆栈的使用供应商。我们完成了它。可是我们的客户十分不中意,由于他们一切有代价的内容被锁定到了一个专有的贮窖中。因而我们想确保我们为我们的一切内容使用(包含Web内容办理、数字资产办理和社会合作软件)都供应了一个基于尺度的开放平台。既然短少如许的尺度,我们就有义务为我们的客户做这方面的事变。
因而,总的来讲,开放和与尺度兼容是我们内容使用的关头卖点。
同时,籍由我们参与JCR和我们以ApacheJackrabbit为中央的开源举动,我们入手下手发卖名为CRX的高伸缩性和企业级贸易全兼容内容堆栈。
CRX是一个在良多方面都十分使人震动的产物,例如说,它同意堆栈中全体细粒度内容以事件的体例被耐久化成复杂、老式的tar文件,在我们的压力测试中,这类体例要赛过传统干系数据库撑持的耐久化层好几倍。
InfoQ:比来,有良多关于Atom和AtomPub的宣扬,并且乃至有人宣称它们要减少JCR。您对此怎样看?
DN:坦率说,我仍旧很隐晦为何人们以为这些协定和API是互相合作的。回忆起人们对照WebDAV和JCR(特地说一句,从特征集的角度看,我以为它长短常中肯的对照)的日子,事先我们在对照HTTP和ServletAPI。你不会听到有人说如许的话,“如今我有了HTTP,为何我还必要API?”。程序员利用的是API,而不是协定。
如今,将Atom与AtomPub和JCR尴尬刁难比,从功效的角度看有点弄笑。只管Atom与AtomPub供应了读写才能,可是JCR一定在很多分歧方面都超出了它们(搜刮、锁、版本标定、会见把持等)。从手艺的角度看,我以为Atom与AtomPub是WebDAV汇合处置的轻量级(大概恰是所必要的)替换品,可是仅此罢了。
InfoQ:可是,API尺度将办理计划绑定到了一门特别的编程言语上(此次是Java),这岂非不是一个广泛的成绩吗?岂非我不想让内容能够被其他平台会见?
DN:我其实不以为这是个成绩。它是一个特征。后面提到的协定同意以一种“平台中立的体例”来会见,不幸的是,这对开辟者来讲没有任何意义,由于他们将不能不自行编写封装剖析器的API。后面所说的ServletAPI就是绑定到了Java平台,使得Java开辟者能用Http举行会见。如今说ServletAPI存在“广泛的成绩”,就由于它被绑定到了一门特别言语上,是不公允的说法。在内容堆栈的天下里(与HTTP和Servlet的例子分歧),我们短少被普遍采取的内容堆栈协定。WebDAV和Atom多是最好候选,但我确信未来在协定级别上会有被更普遍采取的标准。我团体其实不分明短少优异、被很好采取的协定标准怎样就可以被以为是API标准的缺点。
我得乐意地说JCR已被移植到了良多分歧的言语情况,包含.NET、PHP、Perl,个中还包含JavaScript。
InfoQ:鉴于REST创造者RoyFielding是Day的首席迷信家,您对REST是怎样看的?
DN:我以为我本人是“从小玩Web长年夜的”,某种水平上,我很早就入手下手利用Web了,在我进修传统使用开辟手艺之前,我就已入手下手进修往了解和酷爱Web架构。以是,我从未碰到过一样平常使用开辟者碰着的成绩,即让Web往顺应他们有形态的使用开辟范式。我是碰到的是成绩的另外一面,让使用往顺应我的Web天下。
以是,当我初度见到Roy的时分,我就意想到我们已将我们的使用依照restful架构构建了,只是不晓得或正式地称之为REST。只是以为它是事先独一天然的架构作风,固然,到如今也是一样。因而,你能够把我以为是一个“REST的忠厚信徒”或起个其他甚么时兴的绰号,亦或只是把我叫做“Web小子”以区分于“App小子”。固然,Roy在2001年宣布的博士论文中对REST架构作风所做的情势化事情是Web社区十分主要的资产,我对公共花了云云长的工夫来熟悉到它代价感应惊奇。
InfoQ:假如大概的话,JCR是怎样与REST接洽的?
DN:在我看来,JCR和REST在良多分歧方面有联系关系。起首,二者都是以信息为中央的,并且都撑持按条理体例处置信息。因而,JCR的路径能够很直不雅地与URL对应,就像文件体系中的路径一样。我们起首举行的实验之一就是将一切JCRAPI挪用映照到WebDAV,供应一个远程、RESTful体例的JCRAPI。
如许做不但确保了从特征角度看我们在向WebDAV靠齐——这很主要,并且也标明我们没有违背REST架构作风所施加的任何束缚。
对基于静态文件体系的网站来讲,URL到文件体系的映照十分天然。只需我看看URL,我就十分分明产生了甚么。这是因为条理型的文件体系路径到URL的映照十分天然、直不雅。内容堆栈令撑持条理布局的存储失掉了回回,并同意这类十分直不雅的映照。
我以为,JCR是以Web为中央、面向REST使用的幻想信息存储体例。
InfoQ:您能给我们供应一些关于ApacheSling的背景材料吗?为何这个天下必要另外一个JavaWeb框架?
DN:如果唱反调,我会假定这一态度,我还没看到一个Java“Web”框架。
我以为,这个天下充斥了那种将它们的服务表露给“Web”的Java“使用”框架,可是我真不肯意把它们称为“Web框架”。
我一样平常以为,短少一种其实不把Web的无形态架构视为异端或不单单将URL以为“只是一个字符串”的框架。Sling真的不是另外一个“Java使用框架”,并且也其实不想成为它们中的一员。Sling是首个我所看到的不但遵守Web的基础准绳和束缚,并且实践上对它们“感到优秀”的“Web框架”。
我们喜好Web体例,其实不想只需有大概就经由过程注进会话或持续(continuation)来绕过这些基础准绳。我以为Sling和现有使用框架最年夜的一个区分就是它们和URL的干系。在象J2EE或Struts如许的现有使用框架中,URL次要用来暗示你的剧本或把持器(.jsp、.php、.do),并传进实行某个操纵的参数。因而,你终极会失掉一个丑恶的URL,如…/view.jsp?id=123465,这固然不是面向资本的。在加倍古代的框架中,人们入手下手更天真地使用URL,将它“视为一个字符串”,如同意利用正则表达式支解URL。
固然这撑持一个更面向资本或乃至是RESTful架构,可是它相对没有让人们按准确体例做事。它只是给人们更多的选择,并且在良多情形下,选择或让我们说缺少好的缺省举动,都是欠好的。
Sling十分出格,由于Sling背靠内容堆栈,表露的条理名字空间能够十分天然的映照到经由过程一个URL表露的名字空间,同时人们仍旧能完整把持URL,它还十分分明地引导人们怎样将他们的内容节点以一个计划优秀的资本表露出来。Sling使“Web”回回了“Web框架”。
InfoQ:我必需供认,我还不曾看到非条理URL就是一个非RESTful的论点。Sling对REST的其他方面撑持怎样,好比超媒体?
DN:实质上,URL的条理布局和RESTful没任何干系。回到网站还仍旧是文件体系的日子里,URL“/news/newsitem.html”暗示“newsitem.html”位于文件体系某处的“news”文件夹显得很公道。增添一个回档文件夹或另外一个旧事项目十分间接,由于条理URL的映照十分通明。固然,Web服务器固然给你一切大概往举行猖狂的映照,可是这类复杂活被以十分复杂直不雅的体例办理了。Sling接纳了和这完整不异的做法,个中URL的路径缺省被映照到内容堆栈中的一个节点。固然,Sling同意你往部分或完整把持URL,可是我以为供应一个复杂、直不雅和十分壮大的缺省映照(一种考证过、伸缩性和反对最好“Web”理论的做法)长短常主要的。只是供应给开辟者完成本人的URL空间映照的才能基本没甚么用途,由于这将是我在项目启动时必需办理的第一件事,并且每一个开辟者的映照体例都光怪陆离。
大致上,我乐意说,Sling在勉励利用组成REST架构的4个束缚方面干得十分好。这多是最主要的区分,只管其他使用框架大概同意你构建RESTful使用(假如你真的花工夫的话),但Sling“制作”的目标就是为开辟RESTful堆栈撑持的Web使用供应完整开箱即用的撑持,并且使得想疏忽REST架构都难。
InfoQ:十分感激承受采访!
DavidNuescheler是位于瑞士的Day软件公司的手艺计谋和产物开辟卖力人。他是JSR170和JSR283(Java手艺的内容堆栈API)标准的组长。他的小组已为尺度化内容堆栈市场奋战了凌驾4年的工夫。David仍是ApacheJackrabbit项目标提交者和Apache软件基金成员。
来自:http://www.infoq.com/cn/articles/nuescheler-jcr-rest
你对java乐观有点盲目。java的关键就是在服务器上表现优异,而且它提供了整个开发所需要的工具。应该是说,看哪天。net网页编程有没有机会赶上java。 |
|