王詡™Trend Following
讀孫武品股市風雲 看老子悟人間滄桑
-
强人面试java程序员 - [人文生活|Humanities Life]
2007-06-17
面试官:熟悉哪种语言
应聘者:Java。
面试官:知道什么叫类么
应聘者:我这人实在,工作努力,不知道什么叫累
面试官:知道什么是包?
应聘者:我这人实在 平常不带包 也不用公司准备了
面试官:知道什么是接口吗?
应聘者:我这个人工作认真。从来不找借口偷懒
M:知道什么是继承么
Y:我是孤儿没什么可以继承的
M:知道什么叫对象么?
M:知道,不过我工作努力,上进心强,暂时还没有打算找对象。
M:知道多态么?
Y:知道,我很保守的。我认为让心爱的女人为了自已一时的快乐去堕胎是不道德的行为!
请问这和Java有什么关系??
面试官:用过 apache 的东西吗
应聘者:我修过车子
M:tomcat了解么
Y:小时看过。。现在也喜欢看
面试官:了解webwork吗
应聘者:不了解。我一直专注于本职工作,对外部的没有时间涉猎。
M:了解jakarta的哪些项目?
Y:不了解,我只去那儿旅游过。
M:用过bea的weblogic吗?
Y:没,只喝过蜂蜜。
M:了解SUN的创始人吗?
Y:不知道,不过我爆喜欢队中的纳什
M:用过spring么?
Y:没用过,发过。
M:知道Hibernate吗
Y:知道,动物冬天经常Hibernate,但我从来不冬眠
M:知道css吗?
Y:cs出加强版了?
M:OCR用作过没?
Y:我从不玩魔兽
M:W3C标准常用什么地方
Y:Lost Tample
M:知道REST么?
Y:我很勤奋,只知道干活,不知道休息。 -
1 什么是Java、Java2、JDK?JDK后面的1.3、1.4.2版本号又是怎么回事?
答:Java是一种通用的,并发的,强类型的,面向对象的编程语言(摘自Java规范第二版) JDK是Sun公司分发的免费Java开发工具,正式名称为J2SDK(Java2 Software Develop Kit)。
2 什么是JRE/J2RE?
答:J2RE是Java2 Runtime Environment,即Java运行环境,有时简称JRE。
如果你只需要运行Java程序或Applet,下载并安装它即可。
如果你要自行开发Java软件,请下载JDK。在JDK中附带有J2RE。
注意由于Microsoft对Java的支持不完全,请不要使用IE自带的虚拟机来运行Applet,务必安装一个J2RE或JDK。
3 学习Java用什么工具比较好?
答:作者建议首先使用JDK+文本编辑器,这有助你理解下列几个基础概念:path,classpath,package并熟悉基本命令:javac和java。并且下载和你的JDK版本一致的API帮助。
如果你不确定类或函数的用法,请先查阅API而不是发贴求助。
当你熟悉Java之后,你可以考虑换一个IDE。很多人推荐JCreator,实际上JCreator的功能还 是很弱的。
作者推荐eclipse,下载网址http://www.eclipse.org 。因eclispe是免费的.
4 学习Java有哪些好的参考书?
答:作者首先推荐Thinking in Java,中文名《Java编程思想》,有中文版。
该书第一章介绍了很多面向对象的编程思想,作为新手应当认真阅读。
除此以外,O′relly出版社和Wrox出版社的书也不错。作者本人不喜欢大陆作者的书。
也许你觉得英文太难,但是网上大多数资料都是英文的。另外,你需要经常查阅API,而那也是英文的。
5 Java和C++哪个更好?
答:这个问题是一个很不恰当的问题。你应该问:Java和C++哪个更适用于我的项目?
如果你不需要跨平台,不需要分布式,要强调程序的运行速度,C++更为适用。反之?你应当考虑Java。
6 什么是J2SE/J2EE/J2ME?
答:J2SE就是一般的Java。
J2ME是针对嵌入式设备的,比如Java手机,它有自己的SDK。而J2EE使用J2SE的SDK。
J2EE规范更多的是对J2EE服务器的要求和开发人员的约束。详情见后继《J2EE FAQ》。
二、命令篇
7 我写了第一个Java程序,应该如何编译/运行?
答:首先请将程序保存为xxx.java文件,然后在dos窗口下使用javac xxx.java命令,你会发现该目录下多了一个xxx.class文件,再使用java xxx命令,你的java程序就开始运行了。
8 我照你说的做了,但是出现什么"′javac′ 不是内部或外部命令,也不是可运行的程序或批处理文件。"。
答:你遇到了path问题。操作系统在一定的范围(path)内搜索javac.exe,但是没能找到。请编辑你的操作系统环境变量,新增一个 JAVA_HOME变量,设为你JDK的安装目录,再编辑Path变量,加上一项 %JAVA_HOME%\bin。然后关掉并新开一个dos窗口,你就可以使用javac和java命令了。
9 环境变量怎么设置?
答:请向身边会设的人咨询。
10 javac xxx.java顺利通过了,但是java xxx的时候显示什么"NoClassDefFoundError"?br>
答:你遇到了classpath问题。java命令在一定的范围(classpath)内搜索你要用的class文件,但是未能找到。
首先请确认你没有错敲成java xxx.class,其次,检查你的CLASSPATH环境变量,如果你设置了该变量又没有包含.(代表当前目录)的?br> 睿?br> 你就会遇到这个问题。请在你的CLASSPATH环境变量中加入一项 。另外参见15。
11 我在java xxx的时候显示"Exception in thread "main" java.lang.NoSuchMethodError: main"。
答:首先,在你的程序中每个java文件有且只能有一个public类,这个类的类名必须和文件名的大小写完全一样。其次,在你要运行的类中有且只能有一个public static void main(String[] arguments)方法,这个方法就是你的主程序。
12 package是什么意思?怎么用?
答:为了唯一标识每个类并分组,java使用了package的概念。
每个类都有一个全名,例如String的全名是java.lang.String,其中java.lang是包名,String是短名。
这样,如果你也定义了String,你可以把它放在mypackage中,通过使用全名mypackage.String和 java.lang.String来区分这两个类。同时,将逻辑上相关的类放在同一个包中,可以使程序结构更为清楚。你要做的就是在java文件开头加一 行"package mypackage;"。
注意包没有嵌套或包含关系,A包和A.B包对java命令来说是并列的两个包。
13 我没有声明任何package会怎么样?
答:你的类被认为放在默认包中。这时全名和短名是一致的。
14 在一个类中怎么使用其他类?
答:如果你使用java.lang包中的类,不用做任何事。
如果你使用其他包中的类,使用import package1.class1; 或 import package2.*;这里.*表示引入这个包中的所有类。然后在程序中你可以使用其他类的短名。如果短名有冲突,使用全名来区分。
15 我用了package的时候显示"NoClassDefFoundError",但是我把所有package去掉的时候能正常运行。
答:将你的java文件按包名存放。
比如你的工作目录是/work,你的类是package1.class1,那么将它存放为/work/package1/class1.java。如果没有声明包,那么直接放在/work下。
在/work下执行javac package1/class1.java,再执行java package1.class1,你会发现一切正常。另外,你可以考虑开始使用IDE。
16 我想把java编译成exe文件,该怎么做?
答:JDK只能将java源文件编译为class文件。
class文件是一种跨平台的字节码,必须依赖平台相关的JRE来运行。Java以此来实现跨平台.有些开发工具可以将java文件编译为exe文件。 作者反对这种做法,因为这样就取消了跨平台性。如果你确信你的软件只在Windows平台上运行,你可以考虑使用C++/C#来编程。
17 我在编译的时候遇到什么"deprecated API",是什么意思?
答:所谓deprecated是指已经?时,但是为了向前兼容起见仍然保留的方法??br> 这些方法可能会在以后取消支持。你应当改用较新的方法。一般在API里面会说明你应当用什么方法来代替之。
三、I/O篇
18 我怎么给java程序加启动参数,就像dir /p/w那样?
答:还记得public static void main(String[] args)吗?这里的args就是你的启动参数。在运行时你输入java package1.class1 -arg1 -arg2,args中就会有两个String,一个是arg1,另一个是arg2。
19 我怎么从键盘输入一个int/double/字符串?
答:java的I/O操作比C++要复杂一点。如果要从键盘输入,样例代码如下:BufferedReader cin = new BufferedReader( new InputStreamReader( System.in ) );String s = cin.readLine();
这样你就获得了一个字符串,如果你需要数字的话再加上:int n = Integer.parseInt( s ); 或者 double d = Double.parseDouble( s );
20 我怎么输出一个int/double/字符串?
答:在程序开始写:
PrintWriter cout = new PrintWriter( System.out );
需要时写:
cout.print(n); 或者cout.println("hello")等等。
21 我发现有些书上直接用System.in和System.out输入输出,比你要简单得多。
答:java使用unicode,是双字节。而System.in和System.out是单字节的stream。
如果你要输入输出双字节文字比如中文,请使用作者的做法。
22 我怎么从文件输入一个int/double/字符串?
答:类似于从键盘输入,只不过换成BufferedReader fin = new BufferedReader( new FileReader(" myFileName " ) );
PrintWriter fout = new PrintWriter( new FileWriter(" myFileName " ) );
另外如果你还没下载API,请开始下载并阅读java.io包中的内容。
23 我想读写文件的指定位置,该怎么办?
答:你肯定没有认真看API。java.io.RandomAccessFile可以满足你的需要。
24 怎么判断要读的文件已经到了尽头?
答:你肯定没有认真看API。在Reaer的read方法中明确说明返回-1表示流的结尾。
四、 关键字篇
25 java里面怎么定义宏?
答:java不支持宏,因为宏代换不能保证类型安全。
如果你需要定义常量,可以将它定义为某个类的static final成员。参见26和30。
26 java里面没法用const。
答:你可以用final关键字。例如 final int m = 9。被声明为final的变量不能被再次赋值.final也可以用于声明方法或类,被声明为final的方法或类不能被继承。注意const是java的保留字以备扩充。
27 java里面也不能用goto。
答:甚至在面向过程的语言中你也可以完全不用goto。请检查你的程序流程是否合理。
如果你需要从多层循环中迅速跳出,java增强了(和C++相比)break和continue的功能。
例如:
outer :
while( ... )
{
inner :
for( ... )
{
... break inner; ...
... continue outer; ...
}
}
和const一样,goto也是java的保留字以备扩充。
28 java里面能不能重载操作符?
答:不能。String的+号是唯一一个内置的重载操作符。你可以通过定义接口和方法来实现类似功能。
29 我new了一个对象,但是没法delete掉它。
答:java有自动内存回收机制,即所谓Garbarge Collector。你再也不用担心指针错误了.
30 我想知道为什么main方法必须被声明为public static?
答:声明为public是为了这个方法可以被外部调用,详情见面向对象篇37。
static是为了将某个成员变量/方法关联到类(class)而非实例(instance)。
你不需要创建一个对象就可以直接使用这个类的static成员,在A类中调用B类的static成员可以使用B.staticMember的写法。
注意一个类的static成员变量是唯一的,被所有该类对象所共享的。
-
Java 术语与概念 - [科技|Tech]
2006-11-30
- 类(class)---对象的模版,它包含了描述该对象的变量和描述该对象行为的方法。类可以从其它类众继承变量和方法
- 对象(object)---类的实例。同一个类的多个对象可以访问相同的方法,但它们的实例变量通常取不同的值
- 实例(instance)---与对象是一个意思。每一个对象都是某各类的一个实例
- 方法(method)---类里的一组语句,它定义了类对象如何运作。方法与其它语言中的函数类似,但它重视必须位于类里
- 类方法(class method)---作用在类本身而不是某个特定的类实例上的方法
- 实例方法(instance method)---对象的方法,它通过管理对象的实例变量来对该对象进行操作。因为实例方法比类方法更为常见,所以它们经常被简单地叫做方法
- 类变量(class variable)---类里的变量,它描述了类的某种属性而不是类里特定的实例的属性
- 实例变量(instance variable)---描述类里实例的某一属性而不是类本身类属性的变量
- 接口(interface)---单独的类能够实现的一个抽象行为的规范
- 包(package)---类和接口的集合。java.lang包以外的其他包里的类都必须被明确导入或者使用它们完整的包名和类名
- 子类(subclass)---在类层次结构上比另一个类(它的超类)更低一级的类。建立一个从现在类上继续而来的新类的过程通常叫做创建子类。类可以拥有任何所需数量的子类
- 超类(superclass)---在类层次结构上比别人的类(它的子类)更高的一级的类。一个类只能有一个超类直接位于它上面,但这个超类还可以有它的超类,以此类推
-
1990-1994 Java 起源
Larry Wall 说,优秀的程序员应该有的三个特点:懒惰、急躁和傲慢。Java就是诞生在一群懒惰、急躁而傲慢的程序天才之中。
1990年12月,Sun的工程师Patrick Naughton 被当时糟糕的Sun C++工具折磨的快疯了。他大声抱怨,并威胁要离开Sun转投当时在Steve Jobs领导之下的NeXT公司。领导层为了留住他,给他一个机会,启动一个叫做Stealth(秘密行动)的项目。随着James Gosling等人的加入,这个项目的更名为Green。其目标是使用C++为嵌入式设备开发一种星的基础平台技术,James Gosling本人负责开发一个SGML编辑器。正如人们事后分析的那样,这位天才程序员太懒惰了,所以没有把C++学好,开发中碰了一头包;太急躁-- 所以不愿意停下来读读Scott Meyers的新书《Effective C++》;太过傲慢--所以轻易地决定开发一种新的编程语言。他把这种语言命名为C++++--,意思是C++“加上一些好的东西,减去一些坏的东西”。 显然这个糟糕的名字不可能长命百岁,很快这个颇受同伴喜爱的小语言被命名为Oak。
到了1992年9月,Oak语言连同Green OS和一些应用程序一起发布在称做Start 7的小设备上,从而使之有了第一次精彩的亮相。随后,Sun开了一家名为FristPerson的公司,整个团队被转移到这家公司里开发机顶盒,以投标时 代华纳公司的一个项目。这帮天才被技术狂热所鼓舞,开发了一个高交互性的设备,结果没有想到时代华纳公司和有线电视服务商并不愿意用户拥有那么大的控制 权,从而在竞标之战中败给了SGI。Oak的锋芒之锐,竟然把客户都给吓懵了。Sun沮丧地关闭了FirstPerson,召回了整个团队。事实证明,传 统行业中那些脑满肠肥的保守主义者使腐朽没落的。回去!回到激情澎湃的IT产业,抓住互联网的大潮,这才是出路!1994年,Oak被命名为Java,针 对互联网的新一轮开发如火如荼,一切已经就绪,熔岩在地下奔流,火山即将喷发。
1995 :Java 浓香世界
1995 年, Sun正式对外公布了Java,并且发布了JDK 1.0。这种外形酷似C++,却包含一颗Smalltalk般纯洁的面向对象之心的全新程序设计语言及其平台,几乎在一夜之间就成为软件产业的新宠儿。 Java当时仅仅被用来为网站制作一些动态应用,诸如动画图片之类,但这仍然引起了很多Web开发者们的注意,他们非常渴望有一种安全的语言,可以在静态 的HTML网页上制作动画图片。Sun最终把Java集成到NetScape浏览器。同时因为它具有“只写一次,随处运行”的特性,而引起了很多开发者的 注意,他们可以再也不用为了使程序能够在不同型号的硬件上运行而耗费大量的时间来编译代码了。
当时的Web浏览器的出现也为Java的出现起到了很好的推动作用,通过Java和Web浏览器的结合,人们似乎看到了什么,有人甚至预言PC将在一两年 内退出历史舞台,取而代之的使Java的浏览器应用程序,通过网络计算设备来应用。Java的出现为当时的软件产业带来了无限的遐想。
1996 :Java 大跃进,盟主地位就此定
Sun 在1996年一开始首先成立了JavaSoft组织,并在1月23日正式发布自己的Java 1.0,作为20世纪业界出现的最重要的技术之一,Java引起了编程世界的革命。直到现在,Java仍然使无联网上最流行的语言。
在Sun正式发布1.0之后,Java这门新生的语言就拥有了自己的会议--JavaOne,这次会议初试啼音就吸引了600多名参与者。除了拥有这么多 的积极参与者来进行Java的开发之外,各大知名公司也纷纷向Sun申请Java的许可。一时间,NetScape、HP、IBm、Oralce、 Sybase甚至当时刚推出Windows95的微软都是Java的追随者。
Java的应用就像是世界上的顶级玩家们组成的一个公开联盟,告诉全世界我们大家都是在用着Java。也正是因为如此,Java也找到了自己的归宿。现在的J2EE已经成为大中型企业级应用的标准,成为承接数据库和Web之间的一个重要的桥梁。
当年Java的机会实在是太多了,以至于很难知道到底该做什么。最终Java在应用服务器市场获得了难以取代的地位,也确定了J2EE的发展方向,并且仍将延续下去。
1997-2001 :微软与Sun的Java官司
Java诞 生的1995年,正是微软在软件产业地位达到巅峰的时代,Windows 95发布时的风光场面给人们留下了深刻的印象至今难忘。尽管如此,作为最卓越的技术领袖,比尔.盖茨仍然敏锐地注意到了Java。当他了解了Java的一 些细节后,给予了这样的评价:“Java使很长时间以来最优秀的程序设计预言。”基于此,微软于1996年3月申请并获得了Java许可证。微软对于 Java的这一热情态度在当时大大提高了人们对Java的兴趣和信心,但也有不少人担心微软会依靠自己强大的影响力在标准之外另立标准,从而破坏Java 的纯洁性。
果然,从1997年发布Visual J++的第一个版本开始,微软就开始在Java中掺入自己的私有的扩展。这毫无疑问引起Sun的高度重视。1997年10月,Sun向美国加州地方法院起 诉微软公司违反两公司就微软使用Java技术技术所签订的合同,指控微软公司的自己的Java产品中做了“不恰当的修改”,违反了合同中承诺向用户提供 Java兼容产品的条款。这一官司旷日持久,直到2001年1月双方达成和解,微软将继续提供采用Sun开发的Java技术的现有产品(包括测试版)。不 过,Sun有限制的仅对包括Java 1.1.4的微软产品提供许可。到了2001年7月,微软公布新版本的Windows XP将不再支持Sun的JVM,并且退出了.net平台于Java分庭抗礼。
现在会过头看去,但是的这一场官司对Java世界产生了深远的影响。如果没有这一场官司,也许很多Java程序员都在使用Visual J++,基于WFC开发Windows客户端程序,同时不得不面对被两个不同的事实标准所分裂的Java世界。
1998 :Java 2平台发布
1998年, Java 2平台正式发布。经过了三年时间的发展、热热闹闹的公关宣传、红红火火的众厂商的热情参与,Sun终于知道Java适合干什么了。 对比Java刚发明时的技术定位,于Java的戏剧性触“网”的那段历史,Java 2平台的发布可真算得上是有的放矢了。根据官方的文档,Java 2是Sun意思到“One Size Doesn't fit all” 之后,把最初的Java技术打包成三个版本的产物,也就是著名的J2ME、J2SE、J2EE。
之所以说Java自从Java 2平台发布以后,进入了现代。那是因为之间的历史怎么看来都和现在程序员日常开发使用的技术五什么关系,比如Applet,已经很少有人使用了。Java 2之后的历史就不一样了,至少人们在推崇轻量级开发,猛批EJB时还不是会应用J2EE这个词是如何诞生的。而Java 2的三大版本众,除了J2EE得到了长足发展和广泛使用之外,J2ME也在手机市场上取得了遍地开发的结果。相较之下,J2SE难免落寞,只剩SWT这个 血统不纯的家伙在Rich Client回归的时代吸引着人们的眼球了。无论今天看来当时的Java 2有多么的不成熟,至少经过市场和时间的检验,Java 2 规划出来的三大方向把Java技术指向了光明的方向使毋庸置疑的。
1998 :JCP成立并正式运作,
Java开源社群开始蓬勃发展
1998年, JCP组织成立,并且开始把握Java的发展方向。JCP组织的开放性,不但使的所有对Java感兴趣的商业公司可以参与Java的发展,更重要的使 JCP允许个人、非盈利组织、学校等加入,这就给Java带来了巨大的活力。随之兴起的Java开源运动的最大贡献使实现和鼓励知识共享,在众多热情的开 源程序员们的努力和分享下,很多原先只被商业公司掌握的技术、思想和产品可以被有所需要的开发人员免费或者以较低的价格获得使用权,并通过开放源代码更容 易的获得反馈和改进意见从而进一步演化发展。我们知道,所谓知识不是孤立发展认知,而是人们的经验,认识使思考交流和积累的产物。而开源运动所带来的开 放、反馈、交流的风气正式符合人类社会知识形成和发展的规律。
开源运动起源于西方的发达国家,有其现实背景的文化根源。1990年代可以说使IT产业的一个黄金时代。信息时代的兴起对IT人员,特别是软件人员有着巨 大的需要。而软件开发又是一种类似艺术创作的脑力活动,和所有的艺术作家们一样,在作品打上自己的印记并流传在世界上使每一个创作人员的梦想。互联网时代 下的高收入的舒适生活,早九晚五的编写公司的代码并不能满足很多有激情的软件开发人员的梦想,在加上西方传统的基督教文化众十分推崇的分享和交流,开源运 动已经不仅仅是一些个人天才程序员们的游乐园地,而且发展成为一项开源软件产业。
1998 :WebLogic打开J2EE的魔匣
Java语 言的出现使得互联网络有了良好的交互性能,但这些很“酷”的技术仅被人们认为使一些小花招,它还无法消除企业级用户对它的怀疑。1998年,BEA公司宣 布收购WebLogic公司,并接着推出由Sun公司第一个授权使用J2EE许可证的WebLogic Server应用服务器,这个Java版的AppServer一推出就引起业界极大的兴趣。WebLogic Server以器对标准的支持、强悍的运算能力和安全的构架设计等特性也很快征服了那些怀疑J2EE应用的人们。推出市场后不到一年,WebLogic Server就成为业内第一Java应用服务器。
这里我们援引一些当时著名咨询公司的调查数据来说明问题,“在IDC的报告中,BEA的应用服务器和交易服务器领域市场份额第一;在Gartner的报告 中,BEA WebLogic Server拥有业内最广泛的EJB应用安装基础;在Giga Group的报告中,BEA WebLogic Server市场份额占32%”。
因为应用服务器市场极大的发展潜力,在WebLogic Server之后,其它的很多公司也退出了自己的AppServer,如IBM的WebSphere、Sun公司的iPlanet等,逐渐的应用服务器取 代了传统意义上的各种中间件,成为企业应用的基础平台。应用服务器的出现使得Java有了真正意义上的发展。
2002-2004 :Sun与微软的法律碰撞最终以喜剧收场
2003年4月2日,Sun与微软达成16亿美元的法律和解。如果不是晚了一天,许多人会一位这是一个在4月1日愚人节开的玩笑。尽管当时所有人都像是看到“太阳从西边出来了”那样张大了嘴巴,但这的确是事实。
根据两家公司达成的版权协议,双方都会采用对法的技术而支付专利费用,微软向Sun提前支付3.5亿美元使用费,Sun则承诺,如果Sun集成微软的某些技术,也会向微软付款。
毫无疑问,“私下了结”的方式对双方而言都是最好的结果。就在协议签署的当天,在美国旧金山由Sun和微软为“抛弃十年恩怨、携手合作”举行的新闻发布会 上,尽管比尔.盖茨没有到场,但这并没有防碍现场看起来异常轻松的气氛。麦克尼利和鲍尔默各自穿了一件密歇根州底特律“Red Wings”曲棍球的运动服,并谈及了一起在哈佛大学读书的经历,麦克尼利还说:“当时我们两人是非常要好的朋友,当然我们也有吵架的时候。”人与人当然 可能成为终生的知己,但是公司与公司之间有的只能是利益上的分分合合。
2000-2004 :JBoss 和 Eclipse
Java和 开源几乎就是天生的一对,这可以从无比兴盛繁荣的Java开源软件社区得到佐证。目前最有影响力的Java开源软件项目,要数JBoss和 Eclipse。可以说,几乎所有的Java开发人员都或多或少的听到过或接触和使用过它们。前者是目前最优秀、应用最为广泛的企业级开源软件J2EE应 用服务器,后者是功能完全可以替代商业产品的Java IDE。二者的覆盖功能之全、支持工具之广、子项目之多,几乎可以仅凭借它俩来完成企业应用的开发构建到部署实施的全过程,而软件开发者和客户也都可以最 大程度上享受高质量,高可靠Java开源软件所带来的低成本优势。
JBoss和Eclipse的巨大成功,几乎令各自领域的商用竞争者抓狂,其中BEA的WebLogic和IBM的WebSphere在商业利润上受到 JBoss的巨大侵蚀,而Borland的JBuilder、JetBrains 的IDA等诸多优秀的商用开发工具也不得不面对Eclipse独大的现实。JBoss的CEO兼创始人Marc Fleury曾直言不讳地表示,希望占据市场主导地位。“我们希望打败IBM,成为中间件领域里最大的厂商。”JBoss在4.0以前还只是以一个有限公 司,并吸纳多家风险投资,专注于获取利润为目标之一的第二代开源软件模式(JBoss自己称为“Professional Open Source")的创新和运营。这区别于以理论研究为爱好的学院型开源或大公司为基础的非盈利组织开源,如Linux和Apache。当然JBoss的这 种运营方式势必会导致更多的代码控制和专有修改权,但按JBoss的说法使这样更能获得企业客户的信赖。JBoss 的这种模式是否能获得成功还要我们拭目以待。
不管JBoss和Eclipse的未来发展如何,JBoss和Eclipse的成功已经让我们看到了Java开源软件的威力,祝愿它们一路走好。
2004 :Java 5.0
2004年9月30日,代号为“Tiger”,研发历时近三年的J2SE 5.0发布正式版本,这是Java平台历来发布版本中改动面波及最大的一次。
纵观Tiger,“Ease of development”是其核心主题,这一点着重体现于语言特性上的改进,这在很大程度上,简化了开发人员日常的编程任务,以往一些琐碎的手工劳动都代 之以轻松自然,而又安全可靠的自动化实现。其中的注解功能,以及随之而来的声明式编程,还对构筑于J2SE 5.0之上的J2EE 5.0产生了巨大影响。尽管Tiger在语言特性上做了很大的动作,但作为Java技术的基础支撑,这些改动都是深思熟虑的结果。
Tiger发布至今也有大半年了,那么Sun又是如何规划J2SE的未来蓝图的呢?据悉,J2SE的下两个版本分别是代号为“Mustang”的J2SE 6.0和代号为“Dolphin”的J2SE 7.0,预计Mustang将于明年发布。在吸取了Tiger研发周期过长的教训之后,Sun副总裁Graham Hamilton表示,Mustang的发布周期将不会那么长。并且Sun还将“Becoming more open”作为Mustang的主题之一。未来JCP对Java技术的影响将会愈加透明。Mustang在正式发布前的内部版本也会陆续见诸于众,如此, 广大Java开发者便可以更加及时的了解到Java发展的最新情况。在语言层面上的扩展依然会比较谨慎,比如像AOP这样的当下热门技术,依然不太可能会 见诸其中。据Hamilton所言,一个有可能被引入的语法特性被称为“friends” import机制,它将使由多个包组成的大型项目变得易于管理。
共1页 1











