有可能挑战Java开发优势的四种技术
来源:网络 更新时间:2014-12-3
BruceTate有令人惊奇的预见成功技术的记录。他是早期开发者中能预见Spring框架出现的一位;他在EJB3专家组放弃老的方法一年前的时候就预见了EJB2技术的消亡。在他的新书《BeyondJava》中,Bruce关注了语言和技术,这些将来有可能会在一些开发领域对Java的优势发出挑战。在这篇文章中,Bruce提及了四种新出现的重要技术。
Java是一种杰出的产业开发语言,这是因为它带来了伟大的统一和对事实上以前并不存在的重要标准的关注。但是和所有语言一样,Java将来也会褪色。依据我做的超越Java的研究,一个重复出现的主题是有越来越多的人相信Java已不再足够的有效率。以下一组技术可以使你更有效率。他们不是对所有的工程都适合,但当被应用于适合的工程时,他们是优秀的工具。
1.动态语言
动态语言可以比像C 或Java这样的静态语言更加有效率。他们可以让你用更少的语言表达更多的意思。这里,我会关注现在新出现最流行的动态语言Ruby。用Ruby的"Hello,World"和Java的作一个比较:
puts"Hello,world."
这显然既简单又明了。你不需要写一些其他的代码去做这件事。下面是用Java语言的描述:
classHelloWorld{ publicstaticvoidmain(String[]args){ System.out.println("HelloWorld!") }}
在Java中,类型是静态的。这就代表了编译器要检查所有的类型;你必须建立和编译一个完整的程序。在Ruby中,类型是动态的,所以你不需要去声明他们,你可以马上编写和运行他们。下面是用两种语言描述的Fibonacci序列:
First,Ruby:x1,x2=0,1 //110.timesdo putsx2 x1,x2=x2,x1 x2 //4end
注意到在第一、四行同时声明两个变量,让你可以简洁地表达两种不同的声明形式。
另外,注意到10是一个对象,它支持方法,如:times。再另外,在do和end之间是一个代码块。
Ruby代码块可以让你把代码块传入方法。。这种技术导致了难以置信的效率和简洁的代码。
接下来,看一看用Java实现的代码:
classFib{
publicstaticvoidmain(Stringargs[]){
intx1=0;
intx2=1;
inttotal=1;
for(inti=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的发明者JamesDuncanDavidson正在Rails上使用Ruby,以及Java的畅销书作者之一,JSP专家组的
成员DavidGeary正在写一本关于Rails上的Rub的书y。许多在Java社区里有着聪明思想的人都转向使用像Ruby一样的动态语言。这是因为这种新出现的语言能更好的解决最有兴趣的问题。动态语言将不会完全取代Java,但是他们会适合于解决小的,轻量级的问题。