忘记密码   免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
12
最近访问板块 发新帖
楼主: yejia80550708

【好书推荐】你与Java的距离,或许只差一部经典 [复制链接]

论坛徽章:
0
发表于 2017-11-29 17:18 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
30
IT运维版块每日发帖之星
日期:2016-04-01 06:20:00C
日期:2016-10-25 16:10:552017金鸡报晓
日期:2017-02-08 10:39:4215-16赛季CBA联赛之同曦
日期:2017-02-11 13:43:1415-16赛季CBA联赛之同曦
日期:2017-05-13 19:24:3815-16赛季CBA联赛之上海
日期:2017-07-19 17:38:4415-16赛季CBA联赛之福建
日期:2017-08-02 09:45:3315-16赛季CBA联赛之山东
日期:2017-08-23 17:34:3615-16赛季CBA联赛之上海
日期:2017-11-14 09:20:5015-16赛季CBA联赛之佛山
日期:2017-12-01 10:26:3815-16赛季CBA联赛之吉林
日期:2018-03-30 12:58:43黑曼巴
日期:2018-07-13 09:53:54
发表于 2017-11-30 09:42 |显示全部楼层
已经做java开发好多年,还是觉得自己了解的不够深。只能说会用。
1.你觉得Java 的开发效率比 C++ 高在哪里?
java属于高级语言,不用关注细节。开发工具也方便。一次编译哪里都能运行。涉及到java开发的各种资料文档都多。

2.你如何看待JDK 9引入的模块技术?
JDK 9引入的模块技术后,使得每次开发不用引用太多的包。

3.Node.js官方宣称明年它将超越Java,你认为Node.js会超越 Java 吗?为什么?
不会,至少短时间内不会。很多人不会段时间内习惯Node.js的开发使用方式。

4.编程语言发展如此迅猛,你认为Java在未来将遇到什么挑战?有哪些方面需要尽快改进?
新生的语言都有自己的优点,Java不可能都吸取他们的优点。java在开发工具,开发效率进行改进,保持自己的特色。

论坛徽章:
0
发表于 2017-12-01 10:43 |显示全部楼层
1.你觉得Java 的开发效率比 C++ 高在哪里?
一是Java里没有让人头痛的指针;
二是自动内存管理。Java 程序中所有的对象都是用 new 操作符建立在堆栈上的,这个操作符类似于 C++的“new”操作符。Java 自动进行无用内存回收操作,可以不需要我们太在意释放内存资源。
三是多重继承。C++支持多重继承,它允许多父类派生一个子类。也就是说,一个类允许继承多个父类。尽管多重继承功能很强,但使用复杂,而且会引起许多麻烦,编译程序实现它也很不容易。所以 Java 不支持多重继承,但允许一个类实现多个接口。可见,Java 既实现了 C++多重继承的功能,又避免了 C++的许多缺陷。
四是操作符重载。Java 不支持操作符重载,操作符重载被认为是 C++的突出特征。在 Java 中虽然类可以实现这样的功能,但不支持操作符重载,这样使用 Java 语言编程就更简单了。
五是goto语句。Java不提供goto语句,避免程序跳来跳去,使得程序更简洁易读,增强了程序的健壮性。
六是跨平台。秉承着一次编译处处可用的理念, 对于需要支持多个操作系统的应用,Java跨平台太好用了。
七是字符串。C 和 C++不支持字符串变量,在 C 和 C++程序中使用“Null”终止符代表字符串的结束,在 Java 中字符串是用类对象(String 和 StringBuffer)来实现的,在整个系统中建立字符串和访问字符串元素的方法是一致的。Java 字符串类是作为 Java 语言的一部分定义的,而不是作为外加的延伸部分。此外,Java 还可以对字符串用“+”进行连接操作,极大地提高了编程效率。
八是众多开源框架。
九是Javadoc。Java一开始就提供了Javadoc,而且自带类的文档都不错,不用去翻看头文件。

2.你如何看待JDK 9引入的模块技术?
技术革新吧,
一是模块化技术让Java的程序更加容易轻量级部署
二是改进组件间的依赖管理,引入比Jar粒度更大的Module
三是改进程序性能和安全性

3.Node.js官方宣称明年它将超越Java,你认为Node.js会超越 Java 吗?为什么?
不会。java已经经历那么多年,各种框架,应用都很完善了,Node.js想要超越Java很难。

4.编程语言发展如此迅猛,你认为Java在未来将遇到什么挑战?有哪些方面需要尽快改进?
      传统的大型企业或互联网应用,正在被云端,容器化应用、模块化的微服务甚至是函数所替代。Java 需要在新的计算场景下,改进开发效率,推出更易用的集合 API 等,还有就是进一步改进启动和运行性能、优化计算资源使用。目前,相当一部分的 Java 类库和虚拟机特性都是针对长时间、大数据量、高并发等复杂任务进行的优化,但是在很多云计算场景中,短时间、无状态的函数正在成为常见的计算单元。

论坛徽章:
30
CU大牛徽章
日期:2013-05-20 10:45:13数据库技术版块每日发帖之星
日期:2015-09-07 06:20:00每日论坛发贴之星
日期:2015-09-07 06:20:00每日论坛发贴之星
日期:2015-09-07 06:20:00数据库技术版块每日发帖之星
日期:2015-12-13 06:20:0015-16赛季CBA联赛之江苏
日期:2016-03-03 11:56:13IT运维版块每日发帖之星
日期:2016-03-06 06:20:00fulanqi
日期:2016-06-17 17:54:25IT运维版块每日发帖之星
日期:2016-07-23 06:20:0015-16赛季CBA联赛之佛山
日期:2016-08-11 18:06:41JAVA
日期:2016-10-25 16:09:072017金鸡报晓
日期:2017-01-10 15:13:29
发表于 2017-12-04 18:17 |显示全部楼层
1.你觉得Java 的开发效率比 C++ 高在哪里?
Java的开发效率比C++要高,主要表现在基于Java开源的各种框架、各种库、各种工具更为丰富,两者不在一个量级,因此,假设编程功力相当的两个程序员,一个Java程序员和一个C++程序员,当这两个程序员同时接到一个业务开发的任务,并且假设这两个程序员处于同一起点,也即这两个人都是从头开发,那么相对来说,Java程序员的选择更多,更容易利用现有的框架和库,通常能够更快地完成业务开发的任务。因此,表现出来的结果就是,Java的开发效率就是要比C++高很多。
其次,从语言使用的角度,Java比C++要简单很多。从应用开发角度,Java比C++更容易上手,开发效率相对比较高。

2.你如何看待JDK 9引入的模块技术?
模块化是Java社区期待了多年的特性,终于在Java 9给落到了实处。Java的模块化项目也即Jigsaw,打破了Java长期依赖All-in-one/Environment的结构,转身为模块为基础的组件。
先看看没有模块化特性的情况,即使我们写了一个Hello world程序,代码也就仅仅几行,但是它要运行需要整个JRE或JDK环境,而这样的环境怎么样也要上百兆的空间。反过来我们看看C语言或者C++语言,写个Hello world程序,本地编译,可以看到可执行程序非常小,跟Java完全不是一个量级。
有了Java 9的模块化,可以让Java程序更加轻量级,更易于运行和部署;模块化也改进了组件间的依赖管理;同时也改善了性能和安全性。
其实模块化规范Jigsaw的发展本身也是一波三折,由于模块化规范主导权的重要性,原Sun公司不能接受一个无法由它控制的规范,在整个Java SE 6期间都拒绝把任何模块化技术内置到JDK之中。在Java SE 7发展初期,Sun公司再次提交了一个新的规范请求文档JSR-294:Java编程语言中的改进模块性支持(Improved Modularity Support in the Java Programming Language),尽管这个JSR仍然没有通过,但是Sun公司已经独立于JCP专家组在OpenJDK里建立了一个名为Jigsaw的子项目来推动这个规范在Java平台中转变为具体的实现。后来Oracle收购了Sun公司,Jigsaw项目没有被砍掉,但在Java SE 8中仍然没有加入,直到Java SE 9,我们终于盼到了这个新特性。
Jigsaw 项目的目标是改进 Java SE 平台,使其可以适应不同大小的计算设备;改进其安全性,可维护性,提高性能;简化各种类库和大型应用的开发和维护。这个项目的工作量和难度大大超出了初始规划。JSR 376 Java 平台模块化系统(JPMS, Java Platform Module System)作为 Jigsaw 项目的核心, 其主体部分被分解成 6 个 JEP(JDK Enhancement Proposals):
200: The Modular JDK
201: Modular Source Code
220: Modular Run-Time Images
260: Encapsulate Most Internal APIs
261: Module System
282: jlink: The Java Linker
所以,能使用模块化特性,是多么值得庆祝的事,这个特性我们已经期盼了近十年。

3.Node.js官方宣称明年它将超越Java,你认为Node.js会超越 Java 吗?为什么?
最早看到这个说法,是国外的Mikeal Rogers的单方面说法。总的来说,我不太赞同这个观点。
我是这么看的:
Node.js社区这几年发展的确非常火爆,短短几年,在npm仓库托管的开源的工具和库就高达几十万个,这足以说明了Node.js社区的繁荣程度。
但是,Java程序员的基数更大,Java社区虽然在这几年看似不如Node.js社区火爆,但那是因为Java社区早已步入了成熟期。
Node.js能干的一切,Java都能干。
只要Oracle不作死,不干那种天怒人怨的事,那么Java就会一直领先于Node.js。
我就是这么认为的。

4.编程语言发展如此迅猛,你认为Java在未来将遇到什么挑战?有哪些方面需要尽快改进?
我觉得Java的模块化特性还能更进一步发展。
Java的版本发布周期也可以做一些改变,可以学习Node.js的发布方式,考虑每6个月发一个版本,另外同时发布一个长期支持版本。
Java在并发编程领域还可以继续进步。
Java还可以在GPU计算领域大显身手。

论坛徽章:
0
发表于 2017-12-15 09:58 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
2
水瓶座
日期:2014-06-12 08:22:39IT运维版块每日发帖之星
日期:2015-08-05 06:20:00
发表于 2017-12-21 09:09 |显示全部楼层
1.你觉得Java 的开发效率比 C++ 高在哪里?
      C++是面向内存编程,Java是面向数据结构编程。C++里,内存是裸露的,可以拿到地址,随意徜徉,增了删了,没人拦你,等到跑的时候再崩给你看。Java里,能操作的都是设计好的数据结构,array有长度,String不可变,每一个都是安全的,在内存和程序员之间,隔着JVM,像是包住了边边角角的房间,随便小孩折腾,不会受伤。Java程序员是孩子,嚷嚷要这个那个,玩完了就丢,JVM是家长,买买买,还要负责收拾。有的孩子熊点,屋子很乱,收拾起来费劲,但房子还在。
     新手写C++,像是抱着一捆指针,在浩瀚的内存中裸奔。跑着跑着,有的针掉了,不知踪影,内存就泄露了;跑着跑着,突然被人逮住,按在地上打的error纷飞,内存就越界了;终于到了,舒了口气,把针插在脚下,念出咒语,“delete”,系统就崩溃了。
    还有Java的开发工具链比C++好的多。IDEA,其他图形化跟踪性能的工具都完爆C++工具链,C++唯一可以拿出来跟Java系对比的工具VS还不能跨平台免费使用。Java系的社区、轮子都很丰富,C++的轮子也多,但是质量参差不齐,另外C系程序员大部分更愿意自己造轮子自己用,而不是使用别人做好的轮子。Java不用太去关注一些底层相关的问题,内存泄露这个疑难杂症也比C++好多了。最后的最后,一个项目如果选择了Java开发,其背后隐藏的逻辑经常是:这个项目并不是性能攸关的项目,更加可以“快糙狠”出货,而不是像C++那样,既要出货还要关注性能问题,内存泄露等等。


2.你如何看待JDK 9引入的模块技术?
      ,引入了模块系统,提供了对大型复杂系统很重要的隔离,依赖管理等特性。一个Jar包,如果根目录下有 module-info.class 这个文件,则是一个已经包含了模块化信息的模块。在 module-info.class 中,可以指定此模块的名字和版本,哪些 Package 可以被别的模块访问,依赖于哪些模块,这些依赖是否继续传递等。动态模块可能会随时间而改变。可以让开发人员更容易了解其代码的影响,这个就是增强的弃用。

3.Node.js官方宣称明年它将超越Java,你认为Node.js会超越 Java 吗?为什么?
       不会。在领域应用层面 Node.js 在 Web 开发领域特别是其中的前端部分已经达到了惊人的繁荣程度,甚至有不少重要系统的后端部分也基于 Node.js 完成。但如果仅凭这些就轻易的认为 Node.js 将会一统全栈打败包括 Java 在内的其它语言是很幼稚的。首先,在一个大型的系统架构中,整个系统是拆分成很多很小的业务系统的,这些系统往往通过消息队列(如 RabbitMQ、Kafka 等等)相互连接起来。也许在小型 Web 站点中,你从来没用过这些。但相信我,在但凡稍微大一些的业务系统中,都是这么干的。这些消息队列服务存在的理由就是将各个子系统解耦。这样一来,你可以在前端部分应用 Node.js 进行快速开发,在业务处理部分使用 Java 来完成。所以java至少在近几年还是无可替代的。

4.编程语言发展如此迅猛,你认为Java在未来将遇到什么挑战?有哪些方面需要尽快改进?
     Java是静态强类型语言。这种特性使Java编译器在编译时就可以发现非常多的类型错误,而不会让这些错误在运行时才暴露出来。对于构建一个稳定而安全的应用来说,这是一个很大的优势,但是这种静态的类型检查也限制了开发人员编写代码时的创造性和灵活性。
     Java平台也有不足之处,其中最明显的是整个Java平台的复杂性。最早在JDK 1.0发布的时候,只有几百个Java类,而现在的Java 6已经包括Java SE、Java EE和Java ME等多个版本,所包含的Java类多达数千个。对于普通开发者来说,完全理解和熟悉如此庞大的类库的难度非常大。在日常的开发过程中,经常可以看到开发者在重复实现某些功能,而这些功能在Java类库中已经存在,只是不被人知道而已。除了庞大的类库之外,Java语言的语法本身也缺乏足够的灵活性,实现某些功能所需的代码量可能是其他语言的几倍。另外一个复杂性体现在Web应用开发方面。一个完整的Java EE应用程序要求程序员掌握和理解的概念太多,要使用的库也非常多。这点从市面上到处可见的以Java Web应用开发和Struts、Spring及Hibernate等框架为内容的图书上就可以看出来。虽然新出现的Grails和Play框架等都试图降低这个复杂度,但是这些新的框架的流行仍然需要足够长的时间。
      

论坛徽章:
210
2022北京冬奥会纪念版徽章
日期:2015-08-10 16:30:322015亚冠之全北现代
日期:2016-05-11 17:05:27操作系统版块每日发帖之星
日期:2016-05-10 19:23:04操作系统版块每日发帖之星
日期:2016-05-10 19:23:04操作系统版块每日发帖之星
日期:2016-05-10 19:23:04操作系统版块每日发帖之星
日期:2016-05-10 19:23:04操作系统版块每日发帖之星
日期:2016-05-10 19:22:58数据库技术版块每日发帖之星
日期:2016-05-10 19:23:04数据库技术版块每日发帖之星
日期:2016-05-10 19:23:04操作系统版块每日发帖之星
日期:2016-05-10 19:22:58操作系统版块每日发帖之星
日期:2016-05-10 19:22:58操作系统版块每日发帖之星
日期:2016-05-10 19:22:58
发表于 2017-12-26 13:43 来自手机 |显示全部楼层
各有千秋,咱过来围观一下

论坛徽章:
0
发表于 2018-01-29 17:28 |显示全部楼层
感谢分享
我觉得俺们之间的距离还差一条短信验证码---创蓝253短信验证码

您需要登录后才可以回帖 登录 | 注册

本版积分规则

第67期:Neo4j图数据库平台架构最佳实践
【微学堂】10月18日 20:00(周四)

当下,数据的规模和类型每时每刻都在呈几何级数的增长,仅能够管理大量的数据是不够的,关键是能从海量数据中发掘出有用的信息,特别是数据之间的关联,能高效存储和处理数据之间关联的新型数据库为图数据库。 本讲座将介绍Neo4j图数据库的基本概念、设计特点、架构和经典应用场景实战分享。

进入课堂>>
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:wangnan@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP