JAVA网页设计Day公司CTO和JCR标准组长David 谈JCR和REST仓酷云
但是一些大型开发或者是保密型比较高的项目都会用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。 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。 你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢? 接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。 Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。 应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展 Java是一种计算机编程语言,拥有跨平台、面向对java Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。 《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。 Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading) 你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! 象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。 任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言 关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
页:
[1]
2