仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1425|回复: 19
打印 上一主题 下一主题

[学习教程] JAVA网页编程之Java假造机的静态言语撑持仓酷云

[复制链接]
只想知道 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:36:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
微软什么都提供了。你可以试想一下,如果你是新手,你是希望你点一下按钮程序就能运行那,还是想自己一点一点的组织结构,然后打包发部,调错再打包......JavaSE6已不再范围于Java言语了,由于SE6还能够用来实行静态剧本言语代码。据Sun公司JavaSE平台项目标卖力人丹尼·考沃德(DannyCoward)称,Java假造秘密成为一切静态言语的最好实行平台,而供应剧本言语撑持只是完成这一企图的第一步。2006年12月11日,Artima记者弗兰克·索莫斯(FrankSommers)就JSR292——撑持Java平台上的静态言语特约采访了考沃德。
JavaSE6能够到场对Java平台剧本JSR223的完成,从而能够被用来实行以Ruby、Python、Groovy大概JavaScript等静态言语编写的剧本言语代码。可是,丹尼·考沃德以为,Java假造机是专门为静态言语而计划的,要在如许一个平台上完成静态言语注释器尽非易事。考沃德是Sun公司JavaSE平台项目标卖力人、JSR292标准的次要制定者。
在Sun行将公布JavaSE6之前,Artima记者和考沃德举行了一次访谈,个中谈到了Java假造灵活态言语撑持的将来、invokedynamic——一个公用来计划对静态言语对象的撑持的新JVM指令、运转时改动或增加类办法的hot-swapping,和将Java假造机变成静态言语完成幻想平台的方针。
弗兰克·索莫斯:JavaSE6最年夜的特性之一就是对静态言语的撑持。您能向我们形貌一下在现有的JavaSE版本中,这一方针将失掉如何的完成?从此还会增添哪些对静态言语的撑持?
丹尼·考沃德:在已往的几年里,我们已注重到了一种征象。和.NET开辟者社区分歧,Java开辟者社区早已入手下手体验静态言语了。静态言语渐渐成为很多开辟者Java使用开辟一样平常事情的一部分,并经常用于原型开辟(prototyping)或用来进步开辟速率。为了疾速失掉更年夜范围的(Java)使用程序,人们一向在利用静态言语胶合程序部件。
明天,Java平台的剧本JSR223将与JavaSE6一同公布。在会萃静态言语喜好者这一方面,JSR223迈出了它的第一步。起首,它为开辟者供应了同意将别的言语的代码与Java代码夹杂起来的API。其次,JSR223仍是一个框架,它同意开辟者拔出用来注释静态言语的剧本引擎。在JavaSE6中,我们增添了RhinoJavaScript引擎,如许非传统的开辟职员也能够利用JavaScript。
开辟者也能够利用剧本引擎的框架来拔出本人的注释器引擎。我们已从scripting.dev.java.net上的java.net剧本项目中搜集了二十多种静态言语引擎。这是Java对剧本言语撑持的第一阶段,明天我们已完成托付了。
JSR292——撑持Java平台上的静态言语是对JSR223的公道跟进。Java是一门静态范例的言语。Java中的字节码必要晓得前往范例是甚么和办法挪用的参数范例是甚么。
开辟者在为静态范例言语写注释器引擎时,不能不硬造出良多Java范例,以便满意Java字节码办法挪用的需求。这使得这些注释器很懦弱:代码一旦被人改动,要到场偏重新计划一切这些硬造出来的范例将很难。并且,它还会下降实行的速率。风趣的是,Java假造机其实不必要静态地断定那些范例是甚么,只要字节码才请求如许。
在JSR292中,我们将供应一个新的字节码——invokedynamic。这为Java假造机供应了一个办法挪用的指令,而无需晓得字节码的前往值和办法参数。这是一个很手艺、很官方的注释,可是它可以减速Java假造机上的注释器完成,并使它们变得加倍强健。
弗兰克·索莫斯:您方才提到invokedynamic将加速静态言语注释器的实行速率。您能举个例子吗?
丹尼·考沃德:假设你如今要猎取一个断定巨细的汇合(collection),办法的前往范例是Collection。比方,在JRuby中,那种办法大概不必要一个特定的范例前往值就能够失掉完成。开辟职员能够如许了解,将要前往的是一个汇合,可是并没有一个特定的前往(值),由于(Ruby)不是一个静态范例的言语。
静态言语引擎的制造者们在将Ruby代码转化为Java字节码。假如明天的JRuby引擎要将那种办法挪用转化成字节码,将不能不创立一个分解接口来体现前往范例。这个接口不是由开辟职员创立的,而完整是由JRuby引擎创立的,如许JRuby引擎就能够完成谁人办法挪用并将它前往成字节码。这只是前往范例,办法参数和非常的情形是一样的。
JSR292则不必要分解接口所需的前提。明天,即使在注释一段Ruby代码时,静态言语注释器的主要性也超越了methodinvoke字节码。有了JSR292,他们也许很快就能够利用invokedynamic版本。这将使得引擎完成历程流线化,由于明天的良多引擎都在为硬造新的范例和大批的簿记事情而忧愁——假如一个办法在七八个分歧的中央被挪用,那末在一切的中央将不能不重用那一个硬造的范例。
风趣的是,这不是言语的特性,而是字节码的特征。Java开辟者决不会无意识地往利用JSR292的一个新特征,由于JSR292不是一件公然举行的事变。关于新增的字节码,最使人镇静的中央在于它是第一个不必于Java言语的字节码。我们盘算只将这一字节码到场Ruby、Groovy、BeanShell和Python等言语中。我们十分但愿这些言语可以在Java假造机上失掉更快的运转。
弗兰克·索莫斯:那末新增的字节码可以在以后版本的Java假造机上事情吗?
丹尼·考沃德:JSR292的另外一方面是查询拜访hotswapping。在良多静态言语中,办法能够在运转时被改动,乃至被增加到一个类。这也是Smalltalk编程最基础的必要。这一设法就是可以在运转时调剂类。
JSR292是在往年早些时分入手下手的,我们还不断定它的事情效果怎样。不外,这是专家们必要往思索的成绩,这还大概有益于静态注释器的功能改善。这一特征大概必要对Java假造机做一些调剂,Java假造机也将因而必要做一些变更。专家们还必要注重平安的成绩。固然,我们不会在平台上开放一切的平安毛病。
弗兰克·索莫斯:您方才说到了静态言语的良多长处,那末Java今后会不会酿成一种加倍静态的言语呢?
丹尼·考沃德:将Java酿成一门静态言语,这将是一件很成心思的事变。不外,Java作为一门静态言语,它具有良多上风,如程序的强健性、可保护性、和便于向别人公布API的特征。这些上风都是静态言语所供应的,我们不想往改动这些。相反,假如可以让其他的言语在Java假造机上失掉更好的运转,那末我们就更没有需要往改动Java言语了。
我们仍然以为,Java言语是用来开辟性命力强、可保护且可分享的使用代码的最好言语。企业开辟的使用软件必要保持很长一段工夫,且部分代码必要在分歧的开辟团队之间乃至在全部社区平分享。关于这些使用软件,Java本身的特征如静态范例特性、我们正在研讨的模块性和包装布局等,都成绩了Java言语制造出具有倔强性命力的强健程序。
我们看到,静态言语的利用在计划重心上有些分歧,最少程序的部分代码运转得很快。在这些情形下,可否与其别人共享代码或可否在时隔六个月以后仍然读懂一段代码就不再那末主要了。相反,可否疾速地天生代码并敏捷写成一个demo或经由过程Web再现则变得加倍主要了。
我们同意Java开辟职员利用静态言语举行部分编程,然后将这部分代码转换成Java,或持续用Java来开辟程序中更加强健、性命力更强的部分,其他代码则能够经由过程加倍静态的言语来举行开辟。这也是JSR223的主要性地点。在现今社区中,开辟者都有分歧的言语倾向和喜好。既然云云,他们为何不成以同时利用Java和Ruby两种言语呢?
并且,Java开展已过10年,我们对Java所做的变更十分少。我们很分明,为Java言语增添一些新特征以满意开辟者社区大概呈现的每个需求,这是我们很有大概办到的事变。可是,假如我们那样做的话,我们只会使Java酿成一门十分庞大的言语,重蹈C++的复辙。我以为C++加倍注意的是言语的特征而不是简便性。
弗兰克·索莫斯:您说到要使Java假造机成为静态言语implementor的幻想实行情况,对此您有多年夜掌控?您是不是以为Java假造机有甚么限定要素会拦阻这一义务的完成?
丹尼·考沃德:如今次要的成绩是字节码,由于你不能不硬造出良多范例。这也是JSR292显得主要的缘故原由。
固然,从实际下去说,Java假造性能成为任何言语注释器的宿主。良多事变都大概产生,实际是好的,可是理论更好。关头在于让静态言语可以在Java假造机上真正完成缓慢的运转。这也是我们正在勉力做的事变。
如今,我们无妨换个角度来看你的成绩,好比说假如你是一个静态言语计划师或implementor,你为何不肯意把Java假造机作为您的次要实行平台?我们已在如许一个跨平台、可扩大的运转时情况上倾泻了11年的工夫和精神。如今,我们的平台外行业内失掉了普遍的使用。假如你要制造一门新的静态剧本言语,为何不选用如许一个幻想的完成平台呢?岂非另有甚么比它更好的运转时情况吗?
我想未来必定会呈现一门真正盛行的新言语。Java社区特别是Sun公司很但愿看到其他新言语都可以享用到Java假造机所带来的优点,不论它是甚么言语,我们都很愿意如许做。
英文链接:http://www.artima.com/lejava/articles/dynamic_languages.html
来自:http://blog.csdn.net/programmer_editor/archive/2007/12/18/1947013.aspx

最后就是我对java的几点希望:首先是IDE工具,有人说java已经很好了,有jbuilder,eclipse,net网页编程Beans等等,但是我认为如果java想超越.net网页编程,那么他首先要解决的就是IDE工具的整合。
海妖 该用户已被删除
沙发
发表于 2015-1-21 10:56:23 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
灵魂腐蚀 该用户已被删除
板凳
发表于 2015-1-30 16:07:43 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
兰色精灵 该用户已被删除
地板
发表于 2015-2-1 17:19:51 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
再现理想 该用户已被删除
5#
发表于 2015-2-7 11:45:53 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
老尸 该用户已被删除
6#
发表于 2015-2-10 06:15:17 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
飘灵儿 该用户已被删除
7#
发表于 2015-2-11 06:57:21 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
活着的死人 该用户已被删除
8#
发表于 2015-2-11 20:45:12 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
小魔女 该用户已被删除
9#
发表于 2015-2-18 09:00:41 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
柔情似水 该用户已被删除
10#
发表于 2015-3-6 01:33:54 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
愤怒的大鸟 该用户已被删除
11#
发表于 2015-3-14 03:05:16 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
admin 该用户已被删除
12#
发表于 2015-3-17 16:02:14 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
谁可相欹 该用户已被删除
13#
发表于 2015-3-24 10:20:54 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
乐观 该用户已被删除
14#
发表于 2015-4-1 13:46:52 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
小妖女 该用户已被删除
15#
发表于 2015-4-2 19:18:05 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
冷月葬花魂 该用户已被删除
16#
发表于 2015-4-10 10:12:01 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
再见西城 该用户已被删除
17#
发表于 2015-4-23 16:57:48 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
金色的骷髅 该用户已被删除
18#
发表于 2015-5-9 13:59:50 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
莫相离 该用户已被删除
19#
发表于 2015-6-7 19:23:11 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
20#
发表于 2015-6-25 08:28:52 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-2 18:48

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表