Java的开源生态系统是强大而健康的,这是我们(Oreilly)创建OSCON Java(Open Source Convention Java)的主要原因之一。在过去10年中,一些项目已经被广泛接受,并且已经统治了Java软件开发世界,一些甚至影响到了用户的日常生活。

1. JUnit

Kent Beck先生关于Smalltalk的单元测试被Kent Beck 和Erich Gamma 带进Java——JUnit。在这十年里,JUnit带来了测试驱动开发的普及浪潮。许多其它流行语言的单元测试版本也跟着被创造出来了,例如.NET、 C、Python、Perl。

2. Eclipse

刚进入20世纪,随着Java和它的API的成熟,Eclipse IDE(集成开发环境)为程序员提供了一个帮助他们提高生产效率和融入到成长中的Java社区的环境。Eclipse也是第一个用SWT UI 工具包的大型项目。Eclipse已经逐步向成为一个普及的集成开发环境的目标发展。现在它为集成平台插件提供了丰富的基础平台。(SWT是SUN公司的 Swing的强劲竞争者,它证明了Java 程序也可以提供丰富的本地接口。)

3. Spring

Spring 框架在提高Java开发人员的生产效率方面扮演着一个重要的角色。它维持了简单和特点的平衡。Spring为Java开发人员提供了一套服务。这套服务提 供了普遍使用的应用功能,例如数据访问和事务管理。作为Sun公司的企业JavaBean系统的竞争者,Spring为Java应用创造出了另外一个可选 的简单的路径,同时也创造出了一个Java应用开发思想上的健康竞争。

4. Solr

多年来,Solr服务器(集成了Lucene搜索引擎)已经为web和企业应用提供了一个简单实用的搜索功能的解决方案。Solr的特别之处在于它 为强力和快速的Lucene搜索库提供了HTTP访问,使它能够成为任何系统的一部分,无论这系统是不是由Java实现。比其它项目好的地方,Solr已 经使强力快速的搜索成为现代Web应用的一个可选项。

5. Hudson and Jenkins

原名为Hudson,现在也叫Jenkins,这个持续集成工具是Java开发设置的关键部分。Jenkins为软件项目提供了自动构建和测试。随 着 JUnit的测试持续集成,Jenkins在Java的平台上是敏捷研发成为可能。虽然Hudson和Jenkins现在集成在一起,但并没有偏离 Kohsuke Kawaguchi的努力,Kohsuke使它成为世界级的持续集成平台,并提高了大部分Java研发的质量。

6. Hadoop

Hadoop是著名的MapReduce模型的Java实现。它的强壮使得最大多数的“大数据”系统成为可能。通过降低从巨大的数据集合中抽取有价 值的数据的成本,Hadoop 已经被大量使用,如Facebook用它来做海量数据分析,Yahoo 的个人和广告业务,还有很多其他的公司。就像Linux使大型网站能够构建在便宜的硬件上一样,Hadoop则通过在软件层的高容错性使大规模的分布式计 算成为可能。Hadoop和上面提到的Lucene都是Doug Cutting的努力成果。

7. Android

Java的归属(Sun或者Oracle)争论一直持续着。Google却选择用Java语言作为它十分流行的Android移动操作系统的编程语 言。这个选择在整个件研发人员的社区中引起了新的关注。Android 程序编译过程比普通Java程序要多经过一个步骤,将JVM二进制码转换成Dalvik二进制码。(Dalvik是专门为移动设备优化的虚拟 机)Google 已经可以利用Eclipse 为软件研发人员提供一个成熟的编写Android应用的开发环境。

Oracle和Google现在正卷入法律诉讼中,因为Oracle声明Android侵犯了Oracle的多项专利。无论这场诉讼的结果如何,Android都已经为研发人员的就业和延续客户端软件研发领域的Java的使用做了很大的贡献。

编注:根据路透社7月25日最新消息,美国一家地方联邦法院法官威廉姆·阿索普周五驳回了甲骨文起诉GG侵害Java专利的索赔评估报告,认为61 亿美元的索赔金额过高。而就在一天前,威廉姆 曾警告称两家在Android平台的专利争端中没有占在合理立场。威廉姆表示,若Oracle希望推迟10月份的审判直到双方和解,这倒可以试一试。

7个改变世界的Java项目的更多相关文章

  1. 7 个改变世界的 Java 项目

    英文链接:http://radar.oreilly.com/2011/07/7-java-projects.html 文章转载自:开源中国社区 http://www.oschina.net/news/ ...

  2. eclipse — 导入android项目后识别成java项目的问题及解决

    最近在eclipse导入android项目的时候遇到了奇葩问题,再此记录 遇到的问题就是:将完好的android项目导入到eclipse的时候,原本这是一个很容易的事情,但是导入成功后发现,,,靠ec ...

  3. owner:轻松管理java项目配置

    前段时间,一同事说在 github 上“活捉了”一个很有趣的开源项目,它是一个超轻量级的 jar 包,能够帮助你在 java 项目中摒弃样板式的 properties 配置代码,让你轻松自如地管理和使 ...

  4. Scala:Java 项目中混入scala代码

    Spark 是用Scala代码写的.为了调试Spark,做了如下尝试. 1.Eclipse下:Java 项目 ,Using Maven,编写了一个java 版Spark应用. Spark的代码(sca ...

  5. 将 java 项目打包成可运行的 jar 包(main 函数带参数),并上传到 linux 服务器上运行

    一.概述 java项目有两种架构,一种是 B/S 架构的,一种是 C/S 架构的. 对于 B/S 架构来说,我们常见的 java ee 即是 B/S 架构,通常,开发人员会在本地进行开发,然后将项目打 ...

  6. Java开发程序,使用编辑器编写创建Java项目、类

    打开Eclipse 出现界面 工作空间的路径可以选择一个大空间的磁盘存放,点击确定: 创建:程序左上角-文件-新建-JAVA项目 输入项目名(项目名不能为中文),点击完成: 在   包资源管理器中点击 ...

  7. Java开发环境的搭建以及使用eclipse从头一步步创建java项目

    一.java 开发环境的搭建 这里主要说的是在windows 环境下怎么配置环境. 1.首先安装JDK java的sdk简称JDK ,去其官方网站下载最近的JDK即可..http://www.orac ...

  8. eclipse java项目中明明引入了jar包 为什么项目启动的时候不能找到jar包 项目中已经 引入了 com.branchitech.app 包 ,但时tomcat启动的时候还是报错? java.lang.ClassNotFoundException: com.branchitech.app.startup.AppStartupContextListener java.lang.ClassN

    eclipse java项目中明明引入了jar包 为什么项目启动的时候不能找到jar包 项目中已经 引入了 com.branchitech.app 包 ,但时tomcat启动的时候还是报错?java. ...

  9. 像Maven一样构建java项目的目录,更好的管理java工程的源码

    都知道maven具有管理Java或者Javaweb的功能.我个人尤其看中的是其代码层次的分离.不同的代码在不同的文件夹下.这是在eclipse新建一个普通的工程无法实现的.而如果用maven实现有时候 ...

随机推荐

  1. [topcoder]ZigZag

    http://community.topcoder.com/stat?c=problem_statement&pm=1259&rd=4493 动态规划题.如果不用DP,暴力的应当在2^ ...

  2. hhtml from表单为什么能提交数据

    1.html的列表,分为list,table,form. form表单是专门用来提交数据的,即上传数据的.所以form表单默认是必须有提交按钮的,也就是必须要有个button type类型为submi ...

  3. UIBezierPath画圆弧的记录

    UIBezierPath通过 - (void)addArcWithCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)s ...

  4. vimrc for mac

    " Configuration file for vim set modelines=0 " CVE-2007-2438 " Normally we use vim-ex ...

  5. swap chain- IDirect3DSwapChain9

    交换链,对应的接口是IDirect3DSwapChain9,是整个Directx 3D中最核心的接口.D3d程序至少包含一个swap chain,在调用CreateDevice时自动创建, 其中的D3 ...

  6. Servlet入门案例

    开发servlet有三种方法: 1.实现Servlet接口; public interface Servlet { void init(ServletConfig var1) throws Servl ...

  7. Java API ——StringBuffer类

    1.StringBuffer类概述 1)我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间.而StringBuffer就可以解决这个问题 2)线程安全的可变字 ...

  8. 敏捷开发系列之旅 第二站(走近XP极限编程)

    http://blog.csdn.net/happylee6688/article/details/21551065 上篇文章,我们探讨了什么是敏捷开发,以及敏捷开发的方法学.在这篇文章中,我们将继续 ...

  9. C#如何在派生类中不显示父类的一些属性以及TypeDescriptor使用

    public SonClass:FatherClass { 定义属性 .... } Type thisType = typeof(SonClass);方法一: PropertyInfo[] pis = ...

  10. JQuery安全分析

    JQuery安全分析: JQuery的风险均来源于对输入的数据没有进行有效性检验.客户端的Javascript需要检验:来源于服务器的数据.来源于当前页面的用户输入,服务器端需要检验来源于用户端的数据 ...