标签 Java 下的文章

由于 甲骨文 Oracle 在开源项目上的一些作为,以至于它成了开源界的嘲讽对象。在 2015 年旧金山举办的 JavaOne 大会上,前 太阳微系统公司 Sun Microsystems 的 CEO Scott McNealy 出现在了 Java 20 周年纪念视频中,在那段视频中,他讽刺性的列出了“Java 开发者的 12 大噩梦”,其中第四条是“你喜欢开源和分享,但是你却在甲骨文工作。”这惹得在场的开发者们哄堂大笑,但从其中也可以看出甲骨文在开发者中间的形象。

下面列出了一些甲骨文在开源方面发生的一些事情:

2009 年 12 月

MySQL 的创造者 Ulf Michael "Monty" Widenius 向欧共体(欧盟前身)发起请愿,要求阻止甲骨文收购 太阳微系统公司 Sun Microsystems ,其时,太阳微系统公司刚刚收购了 MySQL 公司一年。Widenius 预测,如果太阳微系统公司被收购,甲骨文有可能将 MySQL 的一部分闭源。

2010 年 1 月

甲骨文完成了对太阳微系统公司的收购。

2010 年 2 月

甲骨文从其产品路线图中排除了 OpenSolaris。

2010 年 3 月

太阳微系统公司的开源官 Simon Phipps 在两家公司合并时离开了该公司。

2010 年 4 月

Java 之父 James Gosling 离开了甲骨文,他后来称该公司“挑战了道德”。

2010 年 8 月

甲骨文内部备忘录告知员工,OpenSolaris 将会中止,Solaris 和 ZFS 也会“关闭”。

OpenSolaris 管理委员会解散。

“完全开放”的 OpenSolaris 和 ZFS 项目 Illumos 启动。

多名 MySQL 团队成员离开并加入了 Rackspace,参与到了 MySQL 分支 Drizzle 项目的开发。

2010 年 9 月

OpenOffice.org 社区的一些成员离开并创立了 文档基金会 The Document Foundation (TDF),并分支出了 LibreOffice 项目。他们邀请甲骨文加入文档基金会。

2010 年 10 月

甲骨文要求文档基金会成员离开 OpenOffice.org 项目,理由是“利益冲突”,并且拒绝加入文档基金会。

LibreOffice 正式成为替代 OpenOffice.org 的一个分支。

甲骨文闭源了 HPC 平台(以前叫做 太阳网格计算引擎 Sun Grid Engine ),转而开源维护 开放网格计算调度器 Open Grid Scheduler 项目。四个月后,整个网格计算团队离开并加入了 Univa。

2010 年 12 月

阿帕奇基金会 Apache Foundation 为其 Java 开源实现版本 Apache Harmony 提出了一个技术兼容配套方案,在甲骨文拒绝许可该方案之后,阿帕奇基金会辞去了 Java 社区进程 Java Community Process (JCP)组织的执行董事席位。

2011 年 1 月

甲骨文申请了商标“Hudson”,这是一个开源的 Java 持续集成平台的名字(社区后来投票改名为“Jenkins”),甲骨文继续以它自己的名字“Hudson”开发该项目。

2011 年 4 月

甲骨文停止了 OpenOffice.org 和 OracleOpenOffice 的开发,两个月后,该公司将代码捐献给了阿帕奇基金会。

2011 年 9 月

甲骨文宣布它将发布 MySQL 的商业扩展,并且该项目将不再是完全开源的了,变成了“ 内核开源 open core ”模式。

2013 年 6 月

甲骨文改变了开源的 伯克利 DB Berkeley DB (BDB)的许可证,从一个 BSD 风格的公开许可证变成了 Affero 通用公开许可证,它要求用户以 GPLv3 或 AGPL 许可证提供其应用的源代码给任何一个通过网络连接到他们的应用的人。这一举动被广泛认为是要么恐吓用户为其开发的应用购买商业许可,要么是想弄死 伯克利 DB Berkeley DB (BDB)。


以上信息仅限于笔者收集到的部分,欢迎大家提交更多可信来源的信息来完善此文。

信息参考来源:arstechnica

(题图来自:zimbio.com)

美国旧金山联邦法庭陪审团昨日做出了裁决,认定谷歌的 Android 操作系统使用 Java 进行开发并未侵犯甲骨文版权,因此驳回了甲骨文索赔 90 亿美元的诉讼请求。此项裁决结束了谷歌与甲骨文长达六年的版权诉讼大战,而甲骨文表示将会就此上诉。

甲骨文控诉谷歌偷窃了它的 Java 编程语言来创造了 Android ,因此向谷歌索赔 90 亿美元。而旧金山联邦法庭在经过将近三周的审理后,十人陪审团又用了三天商议,最终做出了上述裁定,即:谷歌使用甲骨文 Java 开发平台开发 Android 受到了版权法“ 合理使用 fair use ”条款的保护。该裁定宣告了案件审判的结束,甲骨文没有获得所寻求的 90 亿美元赔偿金。

谷歌在邮件申明中说:“今天的裁决表明 Android 对 Java API 属于 合理使用 fair use ,这代表着 Android 生态系统的胜利,也是 Java 编程社区和使用开放自由编程语言开发创新消费产品的软件开发者们的胜利!”

该裁决终止了这个持续六年、索赔多达数十亿美元的软件版权诉讼,但是这并不代表着事情的平息,因为甲骨文表示它还将上诉。

甲骨文法律总顾问 Dorian Daley 在邮件申明中说:“我们强烈相信谷歌通过非法复制核心的 Java 技术来开发 Android,从而借此进入到移动设备市场。甲骨文发起这场诉讼就是为了阻止谷歌的这一非法行为。我们确信有许多理由可以提出上诉。”但有关法律专家认为,推翻这一裁决将会很难。

甲骨文在 2010 年诉讼谷歌没有许可就在它的 Android 软件中使用了 Java 的一部分,2014年美国联邦法庭裁决甲骨文对这部分的 Java 拥有版权。而在本月的法庭审理中,谷歌辩称它对 Java 的使用符合版权法的“ 合理使用 fair use ”条款。

谷歌的证人们包括谷歌前首席执行官、现任谷歌母公司 Alphabet 执行董事长 Eric Schmidt。他们说服陪审团相信,谷歌使用 Java 去创新,而非简单地抄袭其代码。在加入谷歌之前, Eric Schmidt 曾为发明了 Java 语言的 Sun Microsystems 公司工作,参与研发和推销 Java。

Sun Microsystems 于上世纪 90 年代开发了 Java 语言,而谷歌在开发 Android 时曾经与 Sun Microsystems 谈判过使用 Java 的授权,但是最终并没有谈下去而是自由使用了那些 Java API。甲骨文 2010 年收购 Sun Microsystems 时, Eric Schmidt 正参与谷歌授权谈判。他称,根据他多年研发 Java 的经验来看,他认为谷歌无需通过谈判就应该被允许使用 Java API,Sun Microsystems 以开源和自由的方式推广它们,而非通过授权或出售方式。

2010年,在甲骨文收购了 Sun Microsystems 几个月之后,甲骨文就将谷歌告上法庭,称谷歌 Android 操作系统中有37个 API 侵犯了其编程语言 Java 的版权。甲骨文认为,谷歌只有获得许可才能使用 Java API 研发 Android 操作系统。而谷歌认为,他们使用这些 API 不受版权法的约束,美国联邦上诉法庭在 2014 年的裁定也适用于 API,为此无需支付版权费。

业界密切关注该案的审理,因为它可能改变软件该如何构建,通过“开源”,代码可以自由获取,还是这些代码必须得到授权。那些站在谷歌一边的人可能担心由此而来的寒蝉效应,但是这次谷歌的“合理使用”的成功或能减轻这种担忧。

在裁定公布后,甲骨文和 Alphabet 股价在盘后交易中变化不大。

via:zdnetUsaToday

  • KDE Applications 16.04 发布,这是一个主要版本,包含了 KDE Plasma 5 桌面环境中的所有重要应用和功能。其上一个版本是 15.12。这次增加了一个新的应用 Minuet,这是一个音乐教育软件。此外,帮助中心 KHelpCenter、非线编软件 Kdenlive、联系人管理 Kontact 以及很多软件都得到了大量更新。
  • Oracle 公司发布季度更新,对 Java、MySQL、VirtualBox 和 Berkeley DB 等软件发布了多个更新,其中 Java 修复了9个安全问题,MySQL 修复了31个。
  • Linux 内核 4.1.22 LTS 和 3.18.31 LTS 发布更新。
  • DragonFly BSD 发布 4.4.3 版本,支持 Intel Skylake 处理器,更新了 OpenSSL 1.0.1s 等。
  • Ubuntu SDK IDE 和 Devkit 软件包发布,它基于 Qt Creator 3.5.1 使用 Qt 5.6.0 构建。你可以使用如下命令来安装:sudo apt update && sudo apt install ubuntu-sdk-ide ubuntu-sdk-dev

问题:我需要在我的 Linux 机器上编译 Java 程序。为此我已经安装了 JDK (Java Development Kit),而现在我正试图设置 JAVA\_HOME 环境变量使其指向安装好的 JDK 。关于在 Linux 上设置 JAVA\_HOME 环境变量,最受推崇的办法是什么?

许多 Java 程序或基于 Java 的集成开发环境 (IDE)都需要设置好 JAVA\_HOME 环境变量。该变量应指向 Java 开发工具包 (JDK)或 Java 运行时环境 (JRE)的安装目录。JDK 不仅包含了 JRE 提供的一切,还带有用于编译 Java 程序的额外的二进制代码和库文件(例如编译器,调试器及 JavaDoc 文档生成器)。JDK 是用来构建 Java 程序的,如果只是运行已经构建好的 Java 程序,单独一份 JRE 就足够了。

当您正试图设置 JAVA\_HOME 环境变量时,麻烦的事情在于 JAVA\_HOME 变量需要根据以下几点而改变:(1) 您是否安装了 JDK 或 JRE;(2) 您安装了哪个版本;(3) 您安装的是 Oracle JDK 还是 Open JDK。

因此每当您的开发环境或运行时环境发生改变(例如为 JDK 更新版本)时,您需要根据实际情况调整 JAVA\_HOME 变量,而这种做法是繁重且缺乏效率的。

以下 export 命令能为您自动设置 JAVA\_HOME 环境变量,而无须顾及上述的因素。

若您安装的是 JRE:

export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))

若您安装的是 JDK:

export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which javac))))

根据您的情况,将上述命令中的一条写入 ~/.bashrc(或 /etc/profile)文件中,它就会永久地设置好 JAVA\_HOME 变量。

注意,由于 java 或 javac 可以建立起多个层次的符号链接,为此"readlink -f"命令是用来获取它们真正的执行路径的。

举个例子,假如您安装的是 Oracle JRE 7,那么上述的第一条 export 命令将自动设置 JAVA\_HOME 为:

/usr/lib/jvm/java-7-oracle/jre

若您安装的是 Open JDK 第8版,那么第二条 export 命令将设置 JAVA\_HOME 为:

/usr/lib/jvm/java-8-openjdk-amd64

简而言之,这些 export 命令会在您重装/升级您的JDK/JRE,或更换默认 Java 版本时自动更新 JAVA\_HOME 变量。您不再需要手动调整它。


via: http://ask.xmodulo.com/set-java_home-environment-variable-linux.html

作者:Dan Nanni 译者:Ricky-Gong 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

提问:当我尝试在Linux中运行一个Java程序时,我遇到了一个错误。看上去像程序编译所使用的Java版本与我本地的不同。我该如何在Linux上切换默认的Java版本?

当Java程序编译时,编译环境会设置一个“target”变量来设置程序可以运行的最低Java版本。如果你Linux系统上运行的程序不能满足最低的JRE版本要求,那么你会在运行的时候遇到下面的错误。

Exception in thread "main" java.lang.UnsupportedClassVersionError: com/xmodulo/hmon/gui/NetConf : Unsupported major.minor version 51.0

比如,程序在Java JRE 1.7下编译,但是系统只有Java JRE 1.6。

要解决这个问题,你需要改变默认的Java版本到Java JRE 1.7或者更高(假设JRE已经安装了)。

首先,试用下面的update-alternatives命令检查你系统上可用的Java版本

$ sudo update-alternatives --display java

本例中,总共安装了4个不同的Java版本:OpenJDK JRE 1.6、Oracle Java JRE 1.6、OpenJDK JRE 1.7 和 Oracle Java JRE 1.7。现在默认的Java版本是OpenJDK JRE 1.6。

如果没有安装需要的Java JRE,你可以参考这些指导来完成安装。

现在有可用的候选版本,你可以用下面的命令在可用的Java JRE之间切换默认的Java版本

$ sudo update-alternatives --config java

看到提示的时候,选择你想试用的Java版本。本例中,我们选择Oracle Java JRE 1.7。

现在用下面的命令验证默认的Java版本。

$ java -version

最后,如果你定义了JAVA\_HOME环境变量,根据你设置的Java版本更新变量。


via: http://ask.xmodulo.com/change-default-java-version-linux.html

作者:Dan Nanni 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Jetty 是一款纯Java的HTTP (Web) 服务器和Java Servlet容器。 通常在更大的网络框架中,Jetty经常用于设备间的通信,而其他Web服务器通常给“人类”传递文件 :D。Jetty是一个Eclipse基金会的免费开源项目。这个Web服务器用于如Apache ActiveMQ、 Alfresco、 Apache Geronimo、 Apache Maven、 Apache Spark、Google App Engine、 Eclipse、 FUSE、 Twitter的 Streaming API 和 Zimbra中。

这篇文章会介绍‘如何在CentOS服务器中安装Jetty服务器’。

首先我们要用下面的命令安装JDK:

yum -y install java-1.7.0-openjdk wget

JDK安装之后,我们就可以下载最新版本的Jetty了:

wget http://download.eclipse.org/jetty/stable-9/dist/jetty-distribution-9.2.5.v20141112.tar.gz

解压并移动下载的包到/opt:

tar zxvf jetty-distribution-9.2.5.v20141112.tar.gz -C /opt/

重命名文件夹名为jetty:

mv /opt/jetty-distribution-9.2.5.v20141112/ /opt/jetty

创建一个jetty用户:

useradd -m jetty

改变jetty文件夹的所属用户:

chown -R jetty:jetty /opt/jetty/

为jetty.sh创建一个软链接到 /etc/init.d directory 来创建一个启动脚本文件:

ln -s /opt/jetty/bin/jetty.sh /etc/init.d/jetty

添加脚本:

chkconfig --add jetty

是jetty在系统启动时启动:

chkconfig --level 345 jetty on

使用你最喜欢的文本编辑器打开 /etc/default/jetty 并修改端口和监听地址:

vi /etc/default/jetty

JETTY_HOME=/opt/jetty
JETTY_USER=jetty
JETTY_PORT=8080
JETTY_HOST=50.116.24.78
JETTY_LOGS=/opt/jetty/logs/

*我们完成了安装,现在可以启动jetty服务了 *

service jetty start

完成了!

现在你可以在 http://<你的 IP 地址>:8080 中访问了

就是这样。

干杯!!


via: http://www.unixmen.com/install-jetty-web-server-centos-7/

作者:Jijo 译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出