作者: DenialSu , 出处:赛迪网, 责任编辑: 包春林,
2008-04-03 04:00
Java是一种杰出的产业开发语言,这是因为它带来了伟大的统一和对事实上以前并不存在的重要标准的关注。但是和所有语言一样,Java将来也会褪色。依据我做的超越Java的研究,一个重复出现的主题是有越来越多的人相信Java已不再足够的有效率。以下一组技术可以使你更有效率。他们不是对所有的工程都适合,但当被应用于适合的工程时,他们是优秀的工具。
1.动态语言
动态语言可以比像C++或Java这样的静态语言更加有效率。他们可以让你用更少的语言表达更多的意思。这里,我会关注现在新出现最流行的动态语言Ruby。用Ruby的"Hello, World"和Java的作一个比较:
puts "Hello, world."
这显然既简单又明了。你不需要写一些其他的代码去做这件事。下面是用Java语言的描述:
class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!") }}
在Java中,类型是静态的。这就代表了编译器要检查所有的类型;你必须建立和编译一个完整的程序。在Ruby中,类型是动态的,所以你不需要去声明他们,你可以马上编写和运行他们。下面是用两种语言描述的Fibonacci 序列:
First, Ruby:x1, x2 = 0, 1 //110.times do puts x2 x1, x2 = x2, x1+x2 //4end
注意到在第一、四行同时声明两个变量,让你可以简洁地表达两种不同的声明形式。
另外,注意到10是一个对象,它支持方法,如:times。再另外,在do和end之间是一个代码块。
Ruby代码块可以让你把代码块传入方法。。这种技术导致了难以置信的效率和简洁的代码。
接下来,看一看用Java实现的代码:
class Fib { public static void main (String args[]) { int x1 = 0; int x2 = 1; int total = 1; for (int i=0; i<10; i++) { System.out.println(total); total = x1+x2; x1 = x2; x2 = total; } }}
你需要去声明所有的变量,以及详细地写出来你用for循环实现的迭代。每个变量都是独立的,所以你必须有一个临时变量用于存放total。
相比,动态语言更为简洁。按照一个普通的规则,如果你可以写更少的代码而不牺牲可读性,这些代码将导致更高的效率。
(但是你不可以牺牲可读性来达到这一步,我们可以以Perl举例作为结尾。)
更为重要的是,动态语言在Java开发者想要去解决的重要问题上表现得更好,如: 元编程。 Hibernate 使用元编程技术使对象持久化。
Spring使用元编程来为Java对象增加服务,而免除你为他们构建额外支持的烦恼。在Rails框架上,当红的Ruby利用了自己能力来构建某种已存的
最有效率的应用开发框架。
令人惊讶的是,许多Java开发者采用了Ruby。Ant和Tomcat的发明者James Duncan Davidson正在Rails上使用Ruby,以及Java的畅销书作者之一,JSP专家组的
成员David Geary正在写一本关于Rails上的Rub的书y。许多在Java社区里有着聪明思想的人都转向使用像Ruby一样的动态语言。这是因为这种新出现的语言能更好的解决最有兴趣的问题。动态语言将不会完全取代Java,但是他们会适合于解决小的,轻量级的问题。
2。Continuation 服务
Web编程绝对是个的灾难。在Java诞生十年后,我们仍旧不能构建一个使返回按钮正确的框架。Web应用是无国界的,所以Web应用会发展得更好。但是很难去构建无国界的应用,而我们现有的框架不能给与我们足够的帮助。你使用大多数Java的Web框架时,从根本上说,你构建了许多
不相关的使用servlets或JSP技术的应用。然后通过手工保存对象来把他们集成起来,这些对象就是你需要的,用来暂时存储对象的会话。
Continuation是语言的构造器,它可以使你快速存储某个线程的状态,过后执行这个线程。基于 Continuation的web框架总体上是通过模拟一个监控状态的应用来使web开发变得更为容易。当你的应用需要从用户那取得数据时,这种框架使用continuation来自动保存应用程序的状态。如果用户按下返回按钮或者通过浏览器的历史纪录回到以前的页面,应用程序可以重新读取一个continuation。
基于continuation最好的框架是用动态语言来开发的。到目前为止,最健壮的框架是Seaside。他是基于一种Smalltalk的Squeak语言的框架。Seaside支持很好的调试功能,你可以实时检查、调试以及在浏览器里改动你的代码。Borges、Iowa和Wee都是基于Ruby且支持continuation的框架。
Java不支持continuations,但是一些在特殊限制下构造的Java框架支持模拟continuations。这些框架具有用其他语言编写的continuations框架的某些特征。
。流行的框架是用了一些高级的技术,如:字节码增强、反射以及特殊类的装载器。这些技术用Java部分地实现了continuations。
。Cocoon 2在Rhino JavaScript 虚拟机中增加了continuations,用来模拟监控状态的应用。
。Spring Webflow使用了状态机来提供对返回按钮良好的支持,以及其他一些continuation服务的特征。
。Lakeshore使用了悬挂的线程来模拟continuations。这种方法不像其他方法一样有可扩展性,同时还缺乏对返回按钮完整的支持,但是这些预计在将来
都会具有。
每个月都会有新的框架出现。我认为在未来的三年内,我们都会使用支持基于continuations的方法的web开发框架,这种框架是由一种语言或者其他语言
编写的。
3.惯例超越配置
Java开发者经常探索用于改进配置的方法。新的框架越来越多的使用Java 5批注来进行配置。其他的框架是用一种不同的方法。Rails中的Ruby常用惯例来推断需要在其他框架进行配置的联系。例如:在结束的时候,一个叫BlogController且有一个show方法的Rails控制器,会自动在blog_controller目录里提交一个叫show.rhtml的视图。Rails还使用命名惯例来绑定数据库表里持久化的类。默认情况下,Perosn类会与用英语的复数people与表进行匹配。
新的框架将会支持惯例,而不是配置。
4.元编程
就像前面提到的一样,在Rails编程框架上的Ruby里,存在着许多hype的。我认为这种hype是正确的。在Rails上的Ruby让你比起java,可以在一个更抽象的层次上编写你的程序。有了Rails上的Ruby,你可以创建域对象,这种对象可以发现相关联的数据库表的内容。例如:你可以写这样简单的模型对象:
class Person < ActiveRecord::Baseend
这种类表面看起来相当的受限制。但是一旦你执行它,Rails就会展现它的神奇。这种实现了持久化Rails的活动纪录框架与相关的数据库关联,以及为了表定义扫描系统表,还发现数据库里列项。然后,活动记录为数据库中的每一列增加一个属性,为数据库中id列名在类中增加一个独一无二的标示符。你可以用下面的类去编写代码:
person=Person.newperson.name='Bruce Tate'person.email='bruce.tate@j2life.nospam.com'person.save
数据库的列名和行为都会在运行时后加入Person类。你可以很容易的扩展Person类:
class Person < ActiveRecord::Base has_many :carsend
通过Ruby中一个belongs_to的简单方法和:department标示符,我实现了所有我想做的。活动记录隐式调用了Ruby的元编程来添加了所有的方法和变量,这些方法和变量用来管理一个任何一个部门之间的一对多关系。Rails用户使用域语言来管理像继承这样的关系,另外可以用Ruby语言在一个更抽象的层次上工作。Rails无缝扩展了Ruby语言。
Rails会不会是下一代伟大的框架?有可能。要做一个选择的话,Rails应该会是在使用Ruby或是其他动态编程语言的元编程框架潮流中的第一个。或者,你可能看到Rails会作为某些松散对齐技术的中枢,它是以元编程作为基础的。在任何情况下,你都会更有效率。
分享到:
相关推荐
【标题】:挑战Java优势的四种技术解析 【描述】:本文分析了四种可能对Java地位构成威胁的技术,包括动态语言、Continuations、函数式编程和脚本语言,探讨它们如何在特定场景下提供更高的效率和灵活性。 【标签...
综上所述,每种Java框架都有其独特的优势和适用场景。选择合适的框架需要根据项目的具体需求、团队的技术背景等因素综合考虑。无论是SpringMVC、Struts2还是Hibernate等框架,都能够帮助企业构建高质量的企业级应用...
Java开发源代码是Java程序员日常工作中不可或缺的一部分,它揭示了Java平台的核心机制和类库的内部运作。在Java 8中,特别是版本1.8.0_144,引入了许多重要的更新和改进,这对于理解Java语言的演进以及如何优化代码...
每一种技术都有其特定的场景和优势,选择合适的技术组合对于项目的成功至关重要。 综上所述,JAVA的常用技术覆盖了从框架到工具的各个方面,它们共同构成了一个强大且灵活的开发平台。对于JAVA开发者而言,熟练掌握...
在IT行业中,Java是一种广泛应用的编程语言,尤其在开发跨平台的应用程序方面具有显著优势。在本项目中,“用Java技术开发的camera”,我们聚焦于使用Java来构建相机功能,这是一个涉及图形用户界面(GUI)设计、...
6. **自我评价**:简短地阐述你的职业目标和自我优势,体现出你对Java开发的热情和潜力。 7. **格式与排版**:简历应保持简洁、专业,避免过多的装饰元素。使用清晰的字体,段落间距适当,让阅读者易于获取信息。 ...
在“Java数据库开发案例精选”中,我们主要探讨的是如何使用Java编程语言与各种数据库进行交互,实现数据的存储、查询、更新和删除等操作。Java数据库开发是软件开发中的重要组成部分,尤其在构建Web应用、企业级...
- **新技术融合**:随着技术的发展,例如Kotlin对Java的补充,以及Qt等新框架的出现,未来可能会有更多融合方式。 - **低代码/无代码平台**:集成开发环境和平台的进步,可能会简化Java与Delphi的结合,降低开发...
### 面向Java开发人员的Scala指南 #### 一、引言 随着技术的不断发展,编程语言也在不断地演进。长期以来,Java作为面向对象编程的代表性语言,在软件开发领域占据主导地位。然而,近年来,一种名为Scala的新语言...
- **Eclipse Koneki**:一套集成开发环境(IDE)工具,专为Linux上的嵌入式Java开发设计。 - **Java Embedded Suite**:Oracle提供的一个开发工具包,包含用于构建嵌入式应用程序的库和服务。 4. **实际开发过程*...
四、模块化挑战 1. **迁移现有项目**:对于已经存在的大型项目,迁移到模块化系统可能较为复杂,需要重新规划和调整依赖关系。 2. **兼容性问题**:一些旧的API和工具可能不支持模块化,需要更新或寻找替代方案。 3....
Spring框架是Java开发中不可或缺的一部分。它提供了一种模块化的方式来管理应用程序的组件,包括依赖注入、事务管理、数据访问等。Spring Boot简化了Spring的应用配置,让开发者可以快速启动项目。而Spring Data则为...
在IT行业中,开发基于Java语言的手机游戏是一个充满挑战与乐趣的领域。Java以其跨平台的优势,成为移动游戏开发的热门选择,特别是J2ME(Java 2 Micro Edition)平台,为开发移动设备上的应用程序提供了强大的支持。...
丰富玩法:原汁原味还原经典模式,同时具备流畅的方块旋转、平移、锁定功能,更有刺激的消除行分计算系统,带来无尽挑战。 易学易教:源码结构清晰、注释详尽,适合初学者入门,亦可供进阶开发者深入研究,助您...
Java移动通信技术是现代通信行业中不可或缺的一部分,尤其在智能手机和平板电脑等移动设备上发挥着重要作用。...这篇毕业设计论文将有助于读者深入理解Java在这一领域的应用实践和技术挑战,为相关项目开发提供指导。
【标题解析】 "基于Java开发的Shop购物App"是一个使用Java编程语言构建...以上是基于Java开发的Shop购物App可能涉及的关键知识点,每个方面都可能有更深入的细节和技术挑战,需要开发者具备扎实的技术基础和实践经验。
虽然具体案例内容未在描述中明确给出,但基于对标题和描述的理解,可以推测《JAVA案例开发集锦3》可能会涵盖以下几类主题: 1. **Web开发**:介绍如何使用Java进行Web应用程序的构建,包括但不限于Spring框架、...
### Java中高级面试必备技术详解 #### 一、Dubbo + Zookeeper **1.1 Dubbo概述** Dubbo是一个高性能、轻量级的开源服务框架,它提供了一整套解决方案,包括服务发布、发现、调用、负载均衡、容错、限流等。Dubbo...
Java开发框架中的Spring+Hibernate+Struts组合,被誉为Java开发的主流体系,具有显著的优势地位。这个框架组合的稳固性体现在其广泛的应用和社区支持,尤其是在企业级JavaEE应用中。Spring作为一款全面的轻量级应用...