V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MapleLeaf
V2EX  ›  Java

Java 地位无可动摇的原因

  •  2
     
  •   MapleLeaf · 2017-07-24 16:00:38 +08:00 · 3576 次点击
    这是一个创建于 2669 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有关 JAVA 的技术卖出多少本书已经是一个很久远的记忆了。现处中年时期的 Java 语言的用途已经不再出现在各种杂志的封面上了。JAVA 从出生到现在已经 19 年了,应用开发圈已经开始绕着那些更有吸引力的新技术。Java 或许是 Web 1.0 时代的一个传说。

    从招聘信息你就可以知道,跟 iOS 相关的开发有 2500 左右的招聘,Java 则有 17000 多个。数据不一定能完美的衡量技术的价值,但是在不断推陈出新的技术推广压力下,Java 职位是 iOS 的 7 倍之多可以说明问题。

    在忘记 Java 在计算机行业里所扮演的角色和做出的那些卓越贡献前,有 12 个绝对的理由来告诉你 Java 不但不会和 COBOL 一样被堙灭,并且在其后时代中更加壮大。换句话说:Java 一直就在并且其地位无法撼动。

    Java 在市场斗争中不屈不挠

    技术界从来没认为 Java 会成功,尽管它的对手太多但依然繁荣发展起来。那些诧异 Java 仍然存在的人们并没有真正去理解为什么 Java 会成 功。微软是 Java 第一个面对的强大对手,因为那时 MS-DOS 提供了通用性,而微软看到 Java 是此通用性最具可能性的替代者。

    此外,苹果 Steve Jobs 从来没接收过 Java,即使是在 Mac 被除了 Adobe 之外所有人忽视的年代。Java 的兼容性可以带来很多有用的代码,但是 Apple 一直未把 Java 视作第一选择。

    Java 内部的很多斗争也给它带来了巨大痛苦。IBM 喜欢 Java,但是一直在和 Sun 斗争。IBM 将其开发的优秀的 IDE 工具称为“ Eclipse ”的决定,一直没被 Sun 的人员欣然接受。Sun 也从来没像 IBM 那样深刻理解商业领域。

    尽管这些原因,尽管 Java 创造者也在 Java 发展中有许多失策之处,Java 依然快速壮大,在服务器应用领域如鱼得水,在桌面应用领域满足基本业务需求。

    Java 虚拟机优化线程的魔力

    Java 虚拟机的强项之一是多线程控制。JVM 针对大型多核机上数百线程的稳定性做了极佳的优化。其他语言会为了能跑在 JVM 上面搞出交叉编译器和模拟器。Java 的这个能力同时也吸引了很多高流量的网站。他们可以在台式机上搞开发然后丢到服务器上让 JVM 发挥出多核的功效。

    Ruby 因为语法的简洁和源码可读性好成为了 Java 目前的一个对手。但是当性能成为瓶颈时,Ruby 开发人员转到了 JRuby,一个用 Java 模拟出来的 Ruby 环境并增强了高负载下的线程处理能力。

    Java 地位无可动摇的 12 个原因 B

    Java 成为编程初学者的语言

    作为大学 AP 计算机课程,意味着在美国很多学生第一次接触到的计算机语言就是 Java。由于这个先入为主的原因,当他们学习其他新的语言时,即便转行学其他语言课程,但是他们在思考的时仍会受到 Java 的影响。 Java 作为一个教学语言是有它的原因的。声明数据类型看上去可能比较抽象,但是为了能让初学者理解计算机的原理,声明数据类型通过编译器会告诉他们数据类型不匹配而无法编译时,可以让他们更好的理解计算机的底层原理。而一些新语言已经摒弃了花括号,维护麻烦使得新人有所厌倦,但是花括号对那些新手是非常有用的,因为能帮助他们理解嵌套的代码块。

    Java 具有跨平台兼容性

    虽然 Java 并不是第一个提供跨平台兼容能力的语言,但是 Java 已经成为最受欢迎的跨平台编程工具,Sun 以及 Oracle 已经为程序可以跨平台使用提供支持。当程序不能在多个平台上使用时,导致问题的原因通常是可以解决的。

    Java 程序员可以使用他们的桌面开发工具进行编码,并部署到目标设备,可能是一台手机或者一台服务器。如果编译器包含了正确的库并且使用了正确的版本,代码就可以运行。Java 在移动领域上的持续成功

    Java 也许并没在大型应用程序中有很好体现,但它却在移动领域的细分市场获得快速发展。Android 平台从上到下都是基于 Java 构建起来的,并且它如今的销量轻易的超过了 iPhone。JAVA ME 作为精简版的语言和 VM 已经被广泛应用在智能手机上,而智能手机如今已经遍布在全世界。

    Java 在蓝光应用取得突破

    Java 曾经为机顶盒而设计的语言,Sun 想在占据此市场,但是 Java 却在另外领域中找到了合适的位置。蓝光标准是围绕 Java 建立,任何想在蓝光光碟中添加额外内容的人,必须得到其 Javac 编译器版本。蓝光光碟不止限于存放视频内容。那些额外特性和交互工具可以使用纯 Java 代码修改并增强。压缩后的视频和压缩后的 Java 字节码的混合。

    Java 让花括号能优化代码工作

    类似 Ruby、Python 或 CoffeeScript 等语言的开发者对于 Java 要求程序员们敲打花括号键来明确表达代码段的开始和结束。括号、花括号、甚至方括号对于程序员略显多余。但是改变符号并不能消除复杂性,使用像制表符等空白后你只能用直觉去感受那些无法看到的东西。如果 if 语句只引导了一行代码,这样不会有问题,但是当很多层嵌套时,就很难看明白。当用 Python 编程时,并不意味着代码像理解英文简单。

    Java 地位无可动摇的 12 个原因 C

    Java 动态类型语法工具 Groovy

    Java 开发者必须要有一个带有动态类型的语法,可以使用 Groovy 一个带有预处理器的工具,它能够生成出 Java 字节码来。这种语言也完全集成到了 Java 中,因此可以在 Groovy 中混入对 Java 库的调用。就像是编写 Java 代码的缩略形式。

    这一灵活性让开发工程师得以找到问题的出路。在使用了动态方法调用时,开发者可以用 Java 来重写重要的核心操作。

    Java 虚拟机让编程更加的灵活

    Java 虚拟机是按照运行 Javac 编译器产生的代码源头来设计和优化,但开发者们意识到 Java 虚拟机也可以运行其他代码。只要编译器们产出标准的 Java 字节码,Java 虚拟机根本不关心是使用的那种编程语言。Haskell、Scala 和 Clojure 的开发者们设计编译器就采用 Java,而只是这个由 Java 虚拟机产生的。

    另外,Sun/Oracle 为创建跨平台环境而努力,工程师们消除平台间差异,并考虑兼容性问题,然后所有人可以运行他们想运行的程序。微软在创建 C#时为大部分主要语言设计了编译 器,使得 C#虚拟机可以运行这些语言编写的所有程序。C#程序员可以用很多不同的语言编写程序,只要通过一个 Windows 盒子将其运行在一个虚拟机上即可。NoSQL 建立在 Java 之上

    数据库是保存信息并快速有效应对查询请求。NoSQL 的出现让程序员们可以自己编写数据库,并根据需求修剪其代码。那些最重要 NoSQL 工具中很多都是用 Java 编写。Cassandra、Lucene、ElasticSearch、HBase 和 Neo4J 只是一些经常提到的 NoSQL 选择。

    据了解,工具通常是开源的。开发者将其独立运行,或将它们集成在自己的模块中,使得 Java 在数据库层中成为通用语言,保证了 Java 开发者们担心由于字符编码和行结束符带来的故障。这意味着 Java 开发者们可以享受由 NoSQL 革命带来的丰硕果实。

    Minecraft 游戏中 00 后的情结

    非主流们对 Java 嗤之以鼻,但是 Java 程序员们却领先一步。在 Ruby 时尚团正聚集起自己的一群粉丝时,Minecraft 让之后的一代人爱上了 Java。它用 Java 编写而成,要扩展该游戏就需学习 Java 来设计其插件,这保证下一代程序员首选是 Java。

    开源成就 Java 代码广泛的应用

    Sun 一直是开源领域中的领导者之一,Java 程序员们发布众多开源许可的库和项目。Apache 项目一直都在使用一个没要求太多回报的许可证来提供优秀的 Java 代码。07 年完成在 GPL 许可下公开大部分代码的工作,这种开放的立场一直延续并保证 Java 平台很大程度是开放和免费的。

    由此,Java 有自己的问题,花括号增加混乱等缺点。但目前还没有一个广度和深度上可与之竞争的语言。最接近的也许是 JavaScript,依靠有闪电般速度的 Node.js 在服务器领域受到广泛关注。而语言是开源且灵活多变,意味着 Java 程序继续存在甚至更加兴旺。 作者扣扣:3115578752

    13 条回复    2017-07-25 12:11:59 +08:00
    liuzhen
        1
    liuzhen  
       2017-07-24 16:37:20 +08:00
    加入于 2017-07-22 14:21:45 +08:00

    LZ 来圈粉啦?
    RLib
        2
    RLib  
       2017-07-24 17:42:48 +08:00
    Android 平台从上到下都是基于 Java 构建起来的
    这点就不认同了, 他的下, 严格来讲, 是 C/C++, 基本是上, 也有很多 native
    XhstormR
        3
    XhstormR  
       2017-07-24 21:24:58 +08:00 via Android
    @RLib 因为底层是 LINUX
    NullMan
        4
    NullMan  
       2017-07-24 22:28:57 +08:00
    http://imgur.com/a/WTaXj

    圈粉咯!圈粉咯!
    NullMan
        5
    NullMan  
       2017-07-24 22:29:30 +08:00


    圈粉咯!圈粉咯!
    hantsy
        6
    hantsy  
       2017-07-24 22:29:37 +08:00
    估计是培训机构之类的软文。。。
    RLib
        7
    RLib  
       2017-07-24 23:22:17 +08:00
    @XhstormR 抛开 linux 内核, 整个 Android Runtime/ART 几乎都是 C++写的
    Afanyiyu
        8
    Afanyiyu  
       2017-07-25 00:55:29 +08:00 via Android
    谈到 pc 版 mc,又谈到 java,可能我只会说:卡卡卡。
    java 很适合初学,不过个人已经吊死在了 net 上,jit,dx,xamarin 都是非常好的例子。
    不知道。大概智者见智吧。
    zhihaofans
        9
    zhihaofans  
       2017-07-25 08:45:43 +08:00 via iPhone
    @Afanyiyu mc 用 java 不是说只是为了容易修改之类的吗
    zhihaofans
        10
    zhihaofans  
       2017-07-25 08:47:06 +08:00 via iPhone
    @Afanyiyu 还有多平台
    Ouyangan
        11
    Ouyangan  
       2017-07-25 09:27:32 +08:00
    没啥干货
    type
        12
    type  
       2017-07-25 11:07:38 +08:00
    楼主是在做 SEO 吧
    Afanyiyu
        13
    Afanyiyu  
       2017-07-25 12:11:59 +08:00 via Android
    @zhihaofans 如果说是容易修改的话,很多语言都比 java 强。oc,csharp,足够使用的。但这些语言当年都面临着多平台的问题,所以既然 java 几乎全部 api 支持 win/mac 的话,java 也许是当年最好的选择了。
    但现在不同了。csharp 已经基本支持了全平台( win 有 pc,mobile,xbox,hub,holographic,,apple 有 ios<phone 和 pad>,watchos,tvos,macos,,Google 也有 android,chromeos,wear 和 auto )。虽然不是完全支持,但这个趋势发展下去指日可望。
    而且,大多数游戏公司已经开发了自己的二级语言,如 ttg 的 ttt。
    mc 秋季会推出“独乐乐不如众乐乐”更新( 1.13&1.2 ),力争实现全平台。可以预期,java 今后的路子不好走了。
    况且 java 本身的 javaw 就存在的一定的内存和性能限制。
    ~_~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5696 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 03:17 · PVG 11:17 · LAX 19:17 · JFK 22:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.