过去的几个月里出现了很多关于Java的讨论,讨论它究竟是一种开源的语言还是一种有专利的语言。人们开始怀疑对Java进行投资是否还有意义,担心这种语言将会受到它的新管家Oracle的独裁控制。
在这种情形下,人们表达出了对这种语言长期发展方向的担忧,尤其担忧的是潜在的开发和运行Java软件所需的许可费用以及成本的增加。

这更加导致了人们去寻找一种开源的,独立于厂商的语言,以此避免把自己的基础架构和开发工作都捆绑在像Oracle这样的单个公司的商业标准之上。 像Python,C/C++,JavaScript,Ruby 和Perl等语言都是优秀的能摆脱这种缚束的候选语言。这些语言的维护、开发和发展都是通过开源社区和开源标准组织(例如ISO和Ecma)进行的。

通常,一个公司永远都不希望缚束在另外一个公司的要求或指挥下。可替换的供应链、多公司集体作用、使用开源标准等都是能够使公司避免落入某个专权公司的专制统治之下的方法。否则的话,其它公司都会桎梏在一个公司的产品中。

所以,Java是什么样的语言?是开源的吗?我们是否会受制于Oracle的公司需求?Java Community Process (JCP)以开源社区的身份维护着Java的开发工作和执行路线。然而,在针对专门用来证明是否跟Java的规范相兼容的Oracle的技术兼容包 (TCK)的认证方式上,大家存在很大的分歧。

当前的许可模式阻止了诸如Apache Harmony等项目以独立的、开源的Java实现版本身份被开发和兼容测试,不能在开源许可协议下对外发布。

因为有这些许可条款,这种语言被议论为非开源,并且只受Oracle支配,只有向Oracle支付了专利费的授权者才可以开发和提供其它版本的 Java解决方案。如果Oracle不调整TCK中关键几项的认证条款,那么JCP所宣称的开源宗旨将毫无疑问的无法实现。这样的结局将会是Java不能 被开源和在社区的形式下被规划,而是将会受Oracle的希望、需求和利害关系支配。

由于这种分裂的观点和反对的意见所造成的后果还是个未知数。Apache软件基金会把这个问题提出来让整个社会参与讨论,近期他们对这个问题公布了自己的决定。

鉴于这些争论,我们且认为Java是不开源的,是受Oracle专利所有的。但这对于Java开发者和使用者是个问题吗?

不是。

历史已经说明了为什么开发人员、企业和其他用户使用或投资于一个有专利权的编程语言是不会有任何问题的。回首上世纪九十年代,当时对于各种形形××× 的企业开发来说,最流行的一种语言就是Visual Basic(VB)。而整个的VB生态系统都是受微软的管理、控制和规划。

尽管受完全的支配,各公司们仍然投入了成百上千万美元来开发VB软件(数亿?)。这些公司愿意投入这么大的资金,是因为他们从这类软件开发里看到了巨大的价值。

开发人员需要向微软购买开发工具,最终用户需要支付微软Windows许可费。大多数情况下,跟微软其它产品相连接的VB应用程序会负担更多的许可费。所有的这些可以总结为是一个成本/收益的评估,开发和部署VB软件显然是一个不错的正确的选择。

那时以后,Visual Basic开始向一个全新的、非完全兼容的方向发展:Visual Basic .NET。这一直是微软的要将它的开发系统向.NET转移的计划中的一部分。这会给开发工作增加一些成本,但过去开发的VB软件仍然可以在这个平台上以一 种向后兼容的模式运行,只需要做一些微小的改动。

把软件向.NET平台迁移显然会造成新的可能非常大的代价,但微软投入了巨大的人力物力来使这个平台向后兼容,使这个Windows生态系统避免了这些迁移成本。

对于微软来说,Visual Basic和它的开发系统是使Windows平台上出现这么多有用的软件的一个非常重要的因素。它因此带动了Windows许可证的销售。鉴于此,他们创立了MSDN,这也成了开发人员技术支持和开阔视野的圣地,获得了无人可及的成果。

通过这种语言、这种程序以及它与数千万Windows程序员之间的联系,你可以看出,今天的软件开发者明天将继续使用这种语言。对于微软来说,有一种很现实的商业需求促使他避免和这些开发人员疏远。

相对于微软,Oracle处在一种不同的情形中。当他得到了Solaris,他把它当作他的整个数据库销售策略中的一个组件。Oracle并没有打算把Solaris开发成一个独立的平台,也没有打算创立一个像MSDN一样的东西来帮助程序员为这个平台开发程序。

他对Java的推动和发展将会围绕着这种语言,而不会把它当作Oracle其它产品的一种支持产品。在他还没有明确的对于Java的未来的商业计划 之前,他会走Sun所选择的道路:为各种环境认证Java虚拟机(JVM),包括其中的Java运行时环境(JRE)。如果Oracle不打算接受开源实 现,那所有现存的JVM和JRE都必须来自Oracle和他的授权者。

这就意味着Oracle有了资金来源,而另一方面,所有的用户将需要为运行Java软件而支付费用。

微软通过它的应用程序运行环境 — 微软Windows操作系统 — 创造出来巨大的商业成就。各种公司为此付费已数十年之久。

当Oracle可以用Java运行环境敛财时(通常会隐藏到硬件或操作系统成本中),我没有感觉到他会对Java环境强征补偿性的许可费。 Oracle一点都不傻,他会努力的让Java保持在一个有效的开发战略上。开发和部署Java软件现在是、将来也会是企业们最可行的选择。

为了进一步说明这个观点,设想如果一个企业想通过不支付Java环境费用来“节省成本”,这意味着它要迁移到另外一种语言(假设今天大部分的企业都 在使用Java)。这种迁移的成本,包括培训费,聘请专家,完全重写应用程序和工具组件,来回的测试,最终的部署,这些很容易就使成本超过了继续使用 Java开发和部署的成本。

正确的做法是不要担心Java是开源还是具有专利所有权。不要理会如今发生在新闻界的讨论。它跟你的商业需要和长远的企业软件生态健康没有关系。

转载于:https://blog.51cto.com/alisdem/466745

由Java说起:编程语言还需要开源吗?相关推荐

  1. Java:计算机编程语言Java的简介、编程环境/工具、如何学习Java之详细攻略

    Java:计算机编程语言Java的简介.编程环境/工具.如何学习Java之详细攻略 目录 Java的简介 1.Java的工作原理--基于Eclipse等编程Java语言→定义Java类→Java虚拟机 ...

  2. java ee是编程语言_什么是Java编程语言?

    java ee是编程语言 什么是Java? (What is Java?) Java is an Object-Oriented Programming Language. It was first ...

  3. 没有配置java环境变量,为什么我java环境变量都还没有配置都可以运行java程序了...

    为什么我java环境变量都还没有配置都可以运行java程序了 来源:互联网  宽屏版  评论 2012-06-09 01:34:26 分类: 电脑/网络 >> 程序设计 >> ...

  4. Java:计算机编程语言Java的简介、安装(编程环境/工具)、学习路线(如何学习Java以及几十项代码编程案例分析)之详细攻略

    Java:计算机编程语言Java的简介.安装(编程环境/工具).学习路线(如何学习Java以及几十项代码编程案例分析)之详细攻略 目录 Java的简介 1.Java的工作原理--基于Eclipse等编 ...

  5. Java的时代依然还在,合格的Java工程师成为紧缺人才

    Java的时代依然还在,合格的Java工程师成为紧缺人才 编程语言的世界变化莫测,在其中浮浮沉沉28年的Java,也经历见证了很多语言的兴起和衰败.在最新的编程语言排行榜中,Java依旧位居前三,可见 ...

  6. java 博客系统_讲解开源项目:5分钟搭建私人Java博客系统

    本文适合刚学习完 Java 语言基础的人群,跟着本文可了解和运行 Tale 项目.示例均在 Windows 操作系统下演示 本文作者:HelloGitHub-秦人 HelloGitHub 推出的< ...

  7. 【微信小程序】基于Java+uniapp框架开发的全开源微信小程序商城系统

    应用介绍 基于Java+uniapp框架开发的全开源微信小程序商城系统,前端采用目前主流的uniapp框架开发,后端采用Java语言开发,前后端代码全部开源,减少重复造轮子,支持小程序商城秒杀.优惠券 ...

  8. JAVA(计算机编程语言)---面向对象---静态面向对象编程语言的代表---分布式---多线程

    JAVA(计算机编程语言) Java是一门面向对象编程语言,吸收了C++语言的各种优点,摒弃了C++里难以理解的多继承.指针等概念,Java语言具有功能强大和简单易用两个特征.Java语言作为静态面向 ...

  9. GitHub年度报告:Python首次击败Java,中国成第二大开源贡献国

    十三 边策 发自 凹非寺  量子位 编译 | 公众号 QbitAI GitHub今天发布了年度报告.去年有1000万的新开发者加入了GitHub社区,80%的repo贡献来自于美国本土之外,中国对开源 ...

最新文章

  1. SVN可以拉项目但是提交时提示没有权限
  2. ibatis example Class 使用
  3. python if语句多个条件-Python 条件语句(if..elif..else)
  4. {面试题2: 实现 Singleton 模式}
  5. typedef的用途
  6. CSS---网络编程
  7. 需求分析中适应性怎么写_商业计划书中的市场分析怎么写,这样才完整!
  8. 安卓牛客专项练习2020.12.31
  9. ORACLE数据库自动备份压缩的批处理脚本 rar 7z
  10. Three.js 学习笔记 - 给跳一跳小游戏添加光源,阴影
  11. wex5 导入mysql_wex5 sqllite本地数据库的运用
  12. 常用数据接口汇总,百度、谷歌、头条、微博指数,高校名单,疫情数据...
  13. vue倒计时翻页插件
  14. 准备给ubuntu18.04安装杀毒软件
  15. 经济适用型北京生活经验分享,80后北漂看过来
  16. 【那些年踩过的坑】服务器配环境:Ubuntu 16.04 + Titan Xp + CUDA 9.0 + cuDNN 7.1 + Tensorflow + Pytorch + MXNet
  17. 大数据与云计算之间的联系,一篇文章搞明白!
  18. MTK VILTE预研文档
  19. Centos搭建简单的证书机构,CA证书服务器
  20. Android获取设备的唯一识别码|设备号|序号|UUID

热门文章

  1. 组织管理插件-代码自动补全-语法检查等特性-SpaceVim v1.5.0
  2. 权限管理数据表设计说明
  3. 浅谈ajax中get与post的区别,以及ajax中的乱码问题的解决方法
  4. Apache Rewrite伪静态基本及URL跳转
  5. c++string类的常用方法详解
  6. Linux 挂载windows网络共享文件 /etc/fstab功能详解
  7. LeetCode 108. Convert Sorted Array to Binary Search Tree
  8. 【今日CV 计算机视觉论文速览 第126期】Thu, 6 Jun 2019
  9. 【今日CS 视觉论文速览】31 Dec 2018
  10. 【今日CV 视觉论文速览】15 Nov 2018