日历
网志分类
· 所有网志 (11)
· doc_tech (5)
· pic (0)
· doc_news (6)
· songs (0)
最新的评论
站内搜索
友情链接
· 我的歪酷
·
·
·
·
·
·

订阅 RSS

0004839

歪酷博客

代码房



xiao831117 @ 2008-01-27 09:56

某些IT专业人才的缺乏已经成为了压在CIO们心头的一块重石。看来,软件开发以及应用人才的需求在美国都将“看涨”。

  编程——应用程序开发

  “很多企业还是在继续着将自己现有的软件网络化的工作,并且在向Web 2.0的方向迈进,因此,具有AJAX、.Net和PHP开发技术的软件人才将会非常受欢迎。”加州的IT猎头公司Robert Half Technology的执行董事Katherine Spencer Lee说。

  “再加上越来越多的组织和企业开始采用微软的Silverlight 1.0等多媒体软件工具,相信对于这方面软件的应用人才的需求也将会不断地增加。”Katherine Lee补充说。

  项目管理

  “CIO们迫切地需要拥有丰富经验的、并能够在复杂的环境中弄清楚所做的信息化工作究竟为业务带来了哪些好处的IT项目经理,而不仅仅是在Project Management Institute 拿到了PMP(Project Management Professional)证书的人。”芝加哥的Mercer International公司的首席顾问David Voort强调说。

  “许多像Sabre Holdings的组织或企业正在尝试着更灵活的开发——驱动式开发技术,而要找到对这一领域的技术很熟悉的人才是相对困难的,但同时又是至关重要的。”Texas-based Air Travel Data公司的产品与解决方案高级副总裁Sara Garrison说。

  “同时,IT企业也非常需要产品质量保证方面的人才来对即将发布的新产品或系统做测试和检验。”N.J.-based的CEO Dan Reynolds说。

  服务平台与技术支持

  在众多企业纷纷开始拓展他们的应用投资组合的同时,要更多服务平台与技术支持方面的专业人才来支持这些系统。不过,这些专业人员可能是要到海外去工作的,因为有一部分服务中心是建立在海外。

  “对技术支持人才的需求会越来越旺盛,因为像IBM和微软这样的厂商的产品已经变得越来越复杂。”CompTIA公司的Hopkins说,“你需要具有更高水平的技术人才,不仅仅是要懂得使用这些系统,更重要的是要懂得怎样管理这些系统。”

  “同时,跨国企业的经营在世界范围内不断地增加,从而使得具有多语言能力的员工成为了企业争抢的目标。”Katherine Lee说。

  安全性技术

  在IT领域,对拥有核心的安全维护方面的能力——如入侵检测能力和对安全性的管理能力——的人才一直需求不断。然而,从今年开始,由于数据库与无线网络安全性计

  划的开展,对这方面人才的需求将会更加旺盛。

  “毫无疑问,一定要想办法去控制数据库与网络的安全性,使之处于更高的级别之上,这就使得必须要有专门的人员来完成这样的工作。”明尼苏达州圣保罗的U.S. Bancorp公司的软件分析师Joel Reiter说。

  数据中心

  很多企业和政府部门为了更有效地利用虚拟技术和其他一些新近的数据自动化或高效率的技术,纷纷开始升级或者干脆重新部署自己的数据中心。另外,由于萨班斯法案和医疗保险方便性和负责性法案(HIPAA,the Health Insurance Portability and Accountability Act)中所要求的日益扩大的数据管理规模和存储量的需求,也为数据中心的“淘金热”添油加醋。

  “同时,正当很多组织和企业对在开放式系统上运行的核心程序抱有很大信心的时候,许多公司在招聘有经验的大型主机技术人员,从而完成类似的‘工业强度计算’的工作。”CompTIA的Hopkins说。

  商业知识

  由于IT部门正在努力与业务部门紧密地联系在一起,并更好地支撑企业的业务,因此,对具有商业洞察力的IT人才的需求旺盛,无论是专长于买卖分析、商业协调甚至是具有商业专业知识的程序开发人员和其他技术人员都是企业所需要的。

  “找到一个精通技术的人容易,但是,找到一个会做生意的万事通(前提是通晓很多开发技术)来做混合业务分析师和系统分析师就非常难了。”Quiznos的Hood无奈地说。

  “事实上,很难找到具有所有这些能力的技术人员。”Robert Rosen认为,“这就增加了对能够在IT部门中充当‘翻译官’角色的技术人员的需求。”

  网络和通信

  可以说,现在所有有关网络方面的技术都很热门,包括网络管理能力以及网络汇聚、无线技术和网络安全维护等,而各个企业和组织已经开始用无线技术和VoIP替换他们原有的语音和数据网络。

  “这对在底层架构中工作的人来说,也产生了很多的机会,包括消息管理员和网络系统管理员,这些工作者在电子邮件、部门网络、PDA的通信中扮演着‘空中交管’的角色。”Katherine Lee说。

  “对拥有无线技术的人才,特别是对懂得无线安全性方面的人才需求很大,因为越来越多的组织试图构建安全可靠的移动应用软件。”Sabre的Garrison说。另外,Garrison还强调,在网络世界中需要解决的致命问题就是在网络环境中如何把握好安全性。

------------------转自CSDN




 
xiao831117 @ 2008-01-27 09:52

【CSDN 1月25日消息】 俄罗斯一所大学购买了一台世界上很强大的超级计算机,这也是这种高复杂精密技术第一次引入前苏联国家。

       莫斯科国立大学购买的是Blue Gene(蓝色基因),它每秒运行27.8万亿次,用于纳米技术和科学应用比如塑造人工心脏。而该大学负责引入超级计算机的一位主任则表示,这掀开了俄罗斯超级计算机的新时代。

       当然这台超级计算机并不是最强大的。世界上最强大的计算机为美国能源部所有,安装在劳伦斯利沃莫尔国家实验室(Lawrence Livermore National Laboratory),用于模拟美国核武器装备的老化及其他潜在的问题。它比俄罗斯购买的快20倍。

       IBM表示,卖给俄罗斯国立大学的这台超级计算机,排在超级计算机的前50位,不过已经获得了美国的出口许可,并只能用于“纯净的科学研究。”

       该大学的计算机数学部门(Department of Computational Mathematics)为这台超级计算机的两个rack支付了500万美元,这两个rack比最快的家庭PC快2600倍,预计08年4月将运行。

       由于技术的先进性,超级计算机的每个rack大小相当于美国国内的冰箱,而且根据需要可以给超级计算机扩展rack。【呐不喊】




 
xiao831117 @ 2008-01-26 22:28

尽管HttpServletResponse.sendRedirect方法和RequestDispatcher.forward方法都可以让浏览器获得另外一个URL所指向的资源,但两者的内部运行机制有着很大的区别。下面是HttpServletResponse.sendRedirect方法实现的请求重定向与RequestDispatcher.forward方法实现的请求转发的总结比较:

1RequestDispatcher.forward方法只能将请求转发给同一个WEB应用中的组件;而HttpServletResponse.sendRedirect 方法不仅可以重定向到当前应用程序中的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源。如果传递给HttpServletResponse.sendRedirect 方法的相对URL以“/”开头,它是相对于整个WEB站点的根目录;如果创建RequestDispatcher对象时指定的相对URL以“/”开头,它是相对于当前WEB应用程序的根目录。

2)调用HttpServletResponse.sendRedirect方法重定向的访问过程结束后,浏览器地址栏中显示的URL会发生改变,由初始的URL地址变成重定向的目标URL;而调用RequestDispatcher.forward 方法的请求转发过程结束后,浏览器地址栏保持初始的URL地址不变。

3HttpServletResponse.sendRedirect方法对浏览器的请求直接作出响应,响应的结果就是告诉浏览器去重新发出对另外一个URL的 访问请求,这个过程好比有个绰号叫“浏览器”的人写信找张三借钱,张三回信说没有钱,让“浏览器”去找李四借,并将李四现在的通信地址告诉给了“浏览器”。于是,“浏览器”又按张三提供通信地址给李四写信借钱,李四收到信后就把钱汇给了“浏览器”。可见,“浏览器”一共发出了两封信和收到了两次回复, “浏览器”也知道他借到的钱出自李四之手。RequestDispatcher.forward方 法在服务器端内部将请求转发给另外一个资源,浏览器只知道发出了请求并得到了响应结果,并不知道在服务器程序内部发生了转发行为。这个过程好比绰号叫“浏览器”的人写信找张三借钱,张三没有钱,于是张三找李四借了一些钱,甚至还可以加上自己的一些钱,然后再将这些钱汇给了“浏览器”。可见,“浏览器”只发 出了一封信和收到了一次回复,他只知道从张三那里借到了钱,并不知道有一部分钱出自李四之手。

4RequestDispatcher.forward方法的调用者与被调用者之间共享相同的request对象和response对象,它们属于同一个访问请求和响应过程;而HttpServletResponse.sendRedirect方法调用者与被调用者使用各自的request对象和response对象,它们属于两个独立的访问请求和响应过程。对于同一个WEB应用程序的内部资源之间的跳转,特别是跳转之前要对请求进行一些前期预处理,并要使用HttpServletRequest.setAttribute方法传递预处理结果,那就应该使用RequestDispatcher.forward方法。不同WEB应用程序之间的重定向,特别是要重定向到另外一个WEB站点上的资源的情况,都应该使用HttpServletResponse.sendRedirect方法。

5)无论是RequestDispatcher.forward方法,还是HttpServletResponse.sendRedirect方法,在调用它们之前,都不能有内容已经被实际输出到了客户端。如果缓冲区中已经有了一些内容,这些内容将被从缓冲区中清除。




 
xiao831117 @ 2008-01-26 22:24

RequestDispatcher是一个Web资源的包装器,可以用来把当前request传递到该资源,或者把新的资源包括到当前响应中。RequestDispatcher接口中定义了两个方法:include/forward

由于<jsp:include>只能指定固定的jsp文件名,不能动态指定jsp文件名。我们需要把<jsp:include>翻译为Java code – RequestDispatcher.include();

用法:
<% request.getRequestDispatcher(filename).include(request, response); />

服务器端的重定向可以有两种方式,一是使用HttpServletResponse的sendRedirect()方法,一是使用RequestDispatcher的forward()方法.

HttpServletResponse.sendRedirect()方法将响应定向到参数location指定的、新的URL。location可以是一个绝对的URL,如response.sendRedirect("http://java.sun.com")也可以使用相对的URL。如果location以“/”开头,则容器认为相对于当前Web应用的根,否则,容器将解析为相对于当前请求的URL。这种重定向的方法,将导致客户端浏览器的请求URL跳转。从浏览器中的地址栏中可以看到新的URL地址,作用类似于上面设置HTTP响应头信息的实现。

RequestDispatcher.forward()方法将当前的request和response重定向到该RequestDispacher指定的资源。这在实际项目中大量使用,因为完成一个业务操作往往需要跨越多个步骤,每一步骤完成相应的处理后,转向到下一个步骤。比如,通常业务处理在Servlet中处理,处理的结果转向到一个JSP页面进行显示。这样看起来类似于Servlet链的功能,但是还有一些区别。一个RequestDispatcher对象可以把请求发送到任意一个服务器资源,而不仅仅是另外一个Servlet。 include()方法将把Request Dispatcher资源的输出包含到当前输出中。

注意,只有在尚未向客户端输出响应时才可以调用forward()方法,如果页面缓存不为空,在重定向前将自动清除缓存。否则将抛出一个IllegalStateException异常。




 
xiao831117 @ 2006-04-05 13:08

《core java 2》FAQ,Bug修正 
     
此书例程       
 
java SDK    
 
java语言规范     
 
白皮书     
sun与安全相关的问题   
显示分子结构的applet  
  
java更多源代码     
 
unicode详细信息    
    
StrictMath    
初学者常犯的错误   
sun one studio   
其更多的开放源代码版本
 GUN Emacs  
其windows版  
 
Emacs的JDEE包 
 
Textpad  
java虚拟机规范



 
xiao831117 @ 2006-04-01 14:08

 
Spring 介绍
Spring的基础及其历史
 
本章概括了Spring的基础、由来以及为何越来越多的人关注和评论它。并且比较了传统的解决依赖关系的方式(使用工厂模式绑定接口与实现)与Spring中用XML方式的异同。同时还涉及了Spring如何简化Hibernate API。
Spring的历史
Rod Johnson是Spring的最初的发起者。Spring项目出自他的Expert One-on-One J2EE Design and Development一书,在2002年的下半年,我非常推崇此书。在本书中,Rod描述了他在J2EE中的实践经验以及为何EJB对于项目来说经常是梦魇(overkill)。他认为一个轻量级的、以普通JavaBeans为基础的框架就能满足大多数开发者的需求。这个后来被著称为Spring的框架在2003年的二月出现在开源网站SourceForge上。此时,Juergen也加入了Rod进行Spring的开发。在接下来的几个月中,两人又吸收了其它多位开发者参与此项目。到此书写作为止,共有十六位开发者在Spring的开发行列中。Rod和Juergen最近合作写了另外一本如何利用Spring解决诸多J2EE开发的问题的书Expert One-on-One J2EE Development without EJB。
Spring的基础架构Rod在2000年之初就开始开发(要早于其它的我所知道的框架如Struts等)。这些基础是从Rod多个成功的商业项目中抽取的。Spring的基础架构被成百上千的开发者不断的加强和完善。每个人都将自己成功的经验加入其中,并且你也可以看到它在一天天的强大。它的组织正在茁壮成长,开发者们正热情高涨并致力使得Spring成为最好的J2EE开发框架。
关于Spring
Spring网站将Spring定义为:“Spring是一个多层的J2EE框架,它的基础是Rod Johnson在Expert One-on-One J2EE Design and Development一书中的示例代码。”它的核心提供了一个管理业务对象以及它们之间依赖关系的方法。例如,应用控制反转(IOC),它可以特定一个数据访问对象(DAO)去依赖于某一个数据源。同时,它允许开发者实现接口并在XML文件中去定义其实现类。Spring还提供了许多对其它框架(如Hibernate以及Struts)的支持使得其与其它框架的集成非常容易。
利用Spring,在某些情况下,设计模式你可以不必。因为Spring其实就是遵从了J2EE的设计模式,并且使得其十分简单。例如,你可以不必去写一个服务定位器(ServiceLocator)器查找Hibernate Sessions,只需要在Spring中配置一个SessionFactory即可。这样使得你可以轻松的遵从J2EE领域专家的最佳实践,而不是自己去勾画出最新的设计模式。
为什么人人都喜欢Spring
如果你经常去一些在线论坛比如TheServerSide.com或者JavaLobby.org,你可以Spring经常会被提及。在一些Java的博客社区(Blogging community)中Spring则更为流行。许多开发者都在描述他们利用Spring的经验以及赞赏它的易用性。
Spring不仅解决了开发者的问题,而且还迫使开发者使用一些好的编程实践,比如面向接口编程、减少耦合以及使得测试更加容易。在现代编程时代,特别是在Java编程中,优秀的开发者都在时间测试驱动开发(TDD)。测试驱动开发是一种利用测试或者你的客户类来驱动其它类的设计的开发模式。与传统开发不同,首先需要建立客户类,而不是写下服务类然后再去编写客户类来适应它。这种方式使得你知道你究竟要从你所开发的服务类获取什么。Spring中包含了大量的test suite使得测试自己所编写的类更加方便和容易。
将Spring与J2EE的最佳实践相比,blueprints建议我们在EJB中处理业务逻辑。但是EJB需要容器支撑才能运行,所以你必须在测试前启动容器。不断的重启象Weblogic、WebSphere以及JBoss这样的EJB服务器来测试所开发的类对开发者来说确实是一件考验耐性的事情。
常见的对Spring的批评
    面对成功,经常会有一些吹毛求疵的批评声。我所见到的对Spring最强的反对意见是说它不是一个“标准”,也就是说它不是J2EE规范的一部分以及它不是由JCP开发的。他们声称EJB才是标准。但是,标准的最主要的用途是保证其在应用服务器之间的可移植性。也就是说在一个服务器上开发的代码应该在另一个服务器上很顺畅的运行,但是将EJBs从一个EJB的容器移植到另外一个容器的时候并不像所预想的那样容易。不同的厂商需要不同的部署描述符并且没有一个通用的配置数据源或者其它对容器依赖的通用的方法。而利用Spring来编写的业务逻辑具有很强的移植性,因为从一个容器移植到另外一个容器我们不需要对代码以及部署描述符做任何的改动!
    Spring方便我们编程的同时,一些开发者抱怨它太庞大(too heavyweight)。然后,Spring是一个菜单式的(a la carte)框架,你可以像点菜一样选择你所要使用的内容。因为开发组已经将发布分割,你可以任意选择你要使用的JARs。
Spring 的原理
    J2EE Design and Development一书描述了Spring的基本原理。Spring是一种利用普通JavaBeans配置应用的方法。我所涉及的JavaBeans,是指拥有其内部变量的getters和setters的类。尤其是,如果一个类暴露了其setters方法,Spring就可以配置该类。利用Spring,你可以利用setters暴露任何类之间的依赖关系(如数据库连接),然后通过配置Spring去设置这些依赖关系。更妙的是,你甚至不必要去写一个类来专门建立数据库连接,这样的功能同样可以在Spring中通过配置实现!这种解决依赖关系的方案被称为控制反转(IOC)或者依赖注射(Dependency Injection)。从技术层面上讲,这是通过某种容器把有依赖关系的对象联系到了一起。
   Spring包括7个单独的模块,每个都有其单独的JAR文件。下图描述了它的7个模块:
 
在第二章所要开发的MyUsers应用系统中,我们将会用到其中的几个,并不是其全部的模块。而且我们所应用的模块中也只是其一小部分功能。
下图描述了我们将在MyUsers系统中所要应用的Spring模块:
Spring 如何使得J2EE应用更加简单
在图1.2中,不难看出Spring提供了我们要建立的应用系统中的很多部分。咋一看来,我们似乎需要对Spring了解很多。事实上不是这样的,多数情况下,在用之前开发者在应用Spring的时候甚至不知道其API。比如,在中间层需要设置声明性事务处理以及在业务代理上设置DAOs。代码中甚至看不到一句从Spring中导入类库的语句,也不用用工厂模式来决定需要应用哪个DAO的实现类。我们所要做的只是将这些放入XML配置文件中,看我们的设计多么清晰,得意吧。
下面的几节讲述Spring如何简化开发过程。
面向接口的编程
    面向接口的编程使开发者事先知道他们将利用对象的方法。在设计应用时利用接口对我们获取实现的灵活性大有帮助。同时,利用接口使得各层之间得交互耦合性更为松散。
测试更为容易
利用测试驱动开发是快速开发高质量代码的最佳途径。它利用在编写接口和实现之前先编写客户类(测试类)来驱动设计。事实上,诸如Eclipse和IDEA这样的主流IDE都允许在实现测试类的同时创建类和方法。Spring使得测试更加容易有如下两个原因:
l         可以在Junit测试用例中很容易的加载和利用Spring管理的beans。这使得我们可以像平常一样用任何客户端与这些beans交互。
l         类之间没有绑定自己的依赖。这样在测试类中可以忽略Spring,只是设置模拟对象(mock objects)来处理依赖关系即可。
减少耦合:工厂模式vs. Spring
为了创建一个容易维护和扩展的的应用,将代码与特定的资源(例如,可能使用了针对于某个特定数据库的SQL函数)紧密耦合是不明智的。当然,如果有合适的函数可以帮助你迅速的实现功能时,针对于某个特定数据库通常是比较容易的。这种情况下,J2EE设计模式通常建议使用工厂模式来减少实现类与应用之间的耦合。
通常情况下,为应用的每个业务层都创建接口是非常好的选择。这样会使得各层之间忽略与之关联层的具体实现。一个典型的J2EE应用包括3层:
l         数据层:与数据库或者其它存储系统交互的类。
l         业务逻辑层:专门处理业务逻辑的类,同时也是界面层和数据层之间的桥梁。
l         用户接口:向用户展现的由类以及显示文件组成的网页或者桌面应用。
图1.3是一个典型的J2EE应用的各层。
工厂模式(在Gof中称为抽象工厂和工厂方法)使得我们可以轻松的从一个实现类切换到另一个实现类。例如,可以创建一个抽象的DAOFactory类以及一个特定的工厂实现类(如DAOFactoryMySQL)。要获得更多的信息,请参考J2EE核心模式中数据访问对象模式。
配置和绑定类之间的依赖关系
工厂模式是一个复杂的J2EE模式。它不仅需要生成两个类,而且还要关注管理这些对象的依赖关系。例如,从一个工厂中得到一个DAO,如何才能传入一个数据库连接(除非在每一个方法中打开一次)?当然,我们可以在构造函数中创建它,但是如果你的DAO实现类需要使用Hibernate Session呢?这个仍可以通过在构造函数中加入一个java.lang.Object的参数然后造型到所需要的类来解决,但是这样的用法是很蹩脚的。
利用Spring绑定接口与实现是更好的方式。接口和实现都可以配置在XML文件中并且可以方便的通过改变文件来改变实现类。更妙的是,可以写单元测试类来隐藏具体的实现类-也就是说可以通过运行测试类来测试多个实现类。它可以很好的与iBATIS和Hibernate的DAO实现集成。由于测试类本质上是客户端,这是保证业务逻辑层与不同的DAO实现之间交互的很好的途径。下面是一个利用Spring获得UserDAO实现的例子:
    如果现在需要变更UserDAO的实现类,你所需要做的只是改变上述XML文本块中class属性。这是一个可以在应用中使用的非常清晰的模式。所需要做的只是在bean的定义文件中加入几行。另外,Spring通过sessionFactory属性管理DAO中的Hibernate Session。我们不需要担心在使用完的时候忘记将它关闭。
对象/关系映射工具
Spring的另外一个用途是它是一个支持对象/关系映射的工具。利用支持ORM的类的第一个优点就是我们不再需要写繁多的try/catch语句来捕获API抛出的异常。Spring将这些异常封装成为运行时的异常(runtime exceptions),这样使得开发者可以在适当的时候捕获发异常。下面是一个不使用Spring的UserDAOHibernate类中的getUsers()方法:
再来看一下使用Spring的Hibernate扩展(从类HibernateDaoSupport类继承),相比来说简短也简单的多:
从这些例子中,不难看出Spring是如何简化各应用层之间以及各类之间的依赖关系的解耦。它还简化了使用类似Hibernate的ORM工具的API。
总结
本章讨论了Spring的历史、为何Spring如此流行以及Spring如何简化J2EE的开发。还提供了使用传统工厂模式与使用Spring的ApplicationContext区别的例子,以及使用Spring开发Hibernate与不使用它开发的对比。
Spring的ApplicationContext可以被看作是一个用于实例化对象的bean提供者(bean provider),通过它可以绑定依赖关系并通过预先的配置提供给开发者。
第二章是一个利用Spring,Hibernate和Struts构建用户管理的web应用的教程。这个应用向我们展示了Spring是如何使得开发以及测试驱动开发更为简单。
第三章则介绍了Spring的核心模块以及它如何管理bean的声明周期。这是Spring的核心,它控制了这些对象如何一起工作并且提供了对象赖以生存的环境。


 
xiao831117 @ 2006-04-01 14:06

中韩程序员和软件设计师资格实现互认

  信息产业部电子教育中心与韩国人力资源开发服务中心,19日就中国计算机技术与软件专业技术资格(水平)考试与韩国信息处理技术人员考试的标准签署了相互认证的协议。继与日本在信息技术领域实现5个级别的考试标准互认后,中国又与韩国实现了2个级别的考试标准互认。今后,实现相互认证的国家以及考试级别还会不断扩展。

  中国计算机技术与软件专业技术资格(水平)考试是由国家人事部和信息产业部组织的国家考试,已经纳入国家职业资格制度。从2004年开始,全国计算机专业技术资格(水平)实施全国统一考试后,不再进行相应专业和级别的专业技术职务任职资格评审工作。各用人单位可以从获得资格证书的人员中择优聘任专业技术职务。

  这一考试的考务工作由信息产业部电子教育中心负责,每年举行两次,报考不限学历和资历条件。近20年来,累计报考145万人,合格24万人。2005年考试规模达到21.8万人,比上年增加20%,创历史最高。



 
xiao831117 @ 2006-04-01 14:04

Ruby On Rails 创始人:对Java 说再见
type="text/javascript"> language="JavaScript" src="http://z.csdn.net/adjs.php?n=462148485&what=zone:13&charset=utf-8&exclude=,&referer=http%3A//news.csdn.net/remark/NewsReply.aspx%3Fw%3Df5acec92-3be6-4494-961c-86c46a335615%26c%3D85988%26Title%3D%25u7A0B%25u5E8F%25u5458%25u7684%25u4E03%25u79CD%25u6B66%25u5668%25uFF0C%25u4F60%25u6709%25u4E86%25u6CA1%25u6709%25uFF1F" type="text/javascript">

JDJ News报道,这两周以来围绕Java发生的两件大事:EclipseCon 和TheServerSide Java Symposium,在业界掀起了一场关于Java与动态语言之间的不休争论。

虽然一直没有一个确定的答案,但围绕Java与动态语言(比如Ruby、PHP、Perl和Python)之间的争论从来没有消失过。随着Java的日趋复杂,动态语言的优势——简化和易用就越加凸显出来。如果说Java是一列稳固的货运火车,那Ruby on Rails就是一列时髦的特快列车。

Ruby on Rails 创始人,David Heinemeier Hansson,认为Ruby等动态语言是Java在Web上最大的威胁者。

“Ruby on Rails 展示了你所使用的动态语言比Java更加便于维护,以往所认为只有Java所具备的市场的影响力,现在轮到Rails开始流行了。”

Geir Magnusson,Apache Software Foundation 成员,同时也是Intel's Middleware Products Division 的工程师,曾经向听众调查多少人尝试过Ruby on Rails,结果是半数以上的人举手。不过当问到有多少人采用该产品框架时,几乎所有人都把手放下。

这个小调查表明了企业级Java开发人员还没有准备由Java转向Ruby on Rails开发。不过,Heinemeier Hansson说,“我看到许多Java开发人员都逃避upstream,他们反而对low end让步——对‘大部分人大部分时候都需要’的另一种理解——表达了一种对‘真正需要的静态语言’的强烈渴望。”