在线客服
扫描二维码
下载博学谷APP
扫描二维码
关注博学谷微信公众号
学习Java技术开发被劝退的原因有哪些?有不少人学习Java时会崩溃,如Java糟糕的入门体验、核心标准库不够用、最啰嗦的语言Java、复杂的 "企业级"产品、库作者处理的问题越来越复杂、太多的抽象性、非本地的FP支持等等原因。

今天我们一起来看一下,学习Java技术开发被劝退的原因:
1、Java糟糕的入门体验
作为一个拥有超过15年Java开发经验的开发者,我对Java生态系统了如指掌。所以我知道我可以安装哪种JDK、如何去管理多个JDK版本、有哪些IDE、构建工具、常用库等。
很多任务都是一次性设置的,但无形之中也给入门级小白一种印象:Java需要复杂的设置,没有繁琐的IDE设置就无法使用Java。
2、核心标准库不够用
通过调研还发现了以下一些问题:一个常见的问题是Java的核心标准库不够用,许多任务需要一些外部库,这也是事实。没有内置的测试库、JSON(取消)编组支持等。虽然Java NIO是一个很大的进步,但与其他语言相比Java中的文件I/O仍然是复杂而冗长的。没有内置的(类似Kotlin)对不可变数据结构的支持。
我的观点:Java有很好的标准库,如Collections、Streams、Java NIO等。使用文件I/O、JDBC等仍然感觉非常低级和冗长。有很好的第三方库,如commons-lang、commons-io、Jackson、Gson、Vavr、Eclipse Collections来执行这些任务。添加第三方库并不是一个大问题。挑战在于当有太多的选择时,新手们会感到困惑不知道该选哪一个。
2、最啰嗦的语言Java
Java是最啰嗦的语言,这是对Java最常见的评论。
我的观点:人们讨厌setters、getters等,但我不认为这有什么不好。因为可以用Lombok和Records来避免编写模板。通过使用正确的库,可以编写出不那么冗长的Java代码。事实上Java在冗长和简洁之间取得了适当的平衡。通常,基于Java的企业应用程序会被维护很多年,而被认为冗长的东西实际上会帮助人们理解它。其中一个回答说明了一切,任何时候都会选择传统的Java而不是传统的Node.js。
3、 复杂的 企业级产品
另一个常见的话题是关于复杂的企业级产品,如ClassLoaders、JNDI、OSGI、JMX、Reflection、AOP、ByteWeaving、Dynamic Proxies、应用服务器等。
我的观点:十年前,在EJB 2中使用EAR打包,处理ClassLoader的问题是多么令人沮丧。另外,在JBoss/WildFly等应用服务器中部署Spring应用时也有处理类加载器问题的经验。
在过去的7、8年里,我没有再使用EJB、OSGI、JMX、应用服务器。在现代的Java世界中应用程序被构建成fat jars,而框架则负责做AOP、ByteWeaving、动态代理等。除非你还在开发传统的应用程序,否则我认为你不会用现代Java技术栈来处理这些问题。
4、库作者处理的问题越来越复杂
与典型的商业应用开发者相比,高级用户、库作者要处理的复杂性达到了全新的高度。一些高级用户提到关于Java的挑战是:类的加载、类型擦除、功能性接口的异常语义、反射、原理、空值、默认可变性、多线程、通用平等。
因为没有建立过任何复杂的库,所以没有太多的话语权。除此以外还有一些问题:微服务的高内存占用率、Streaming arch分层在一个老化的生态系统上,其后果不甚明了。
5、太多的抽象性
虽然现代框架使专业开发者很容易构建应用程序,但对于新手来说却变得很困难。大多数的框架都是非常抽象的。当他们试图多了解一些东西的时候,就像剥洋葱一样,发现需要了解的东西无穷无尽。
6、非本地的FP支持
虽然从Java 8开始,Java增加了一些函数式编程支持,但Java绝对不是作为函数式编程语言设计的核心。有些人提到他们可以用FP构建软件,比用OOP好用得多。你也可以在Java中应用一些FP的概念,如纯函数、不变性,但不会像Clojure或Haskell等FP语言那样自然。
7、其他原因
使用旧版应用程序的几率更高;糟糕的面试经历。
8、x语言很复杂不可信
之所以问 "为什么你认为Java很复杂?"是为了了解别人的观点。虽然我不同意一些观点,而且有些事情对我来说不是什么大问题,但这有助于我理解其他人的想法。
任何语言、框架和库都是为了解决一个主要问题而创建的,在这个过程中,它可能也会有一些非主要的功能。Java被设计成面向对象的语言,如果你想让它成为一种功能编程语言,它就没有Clojure或Haskell那么好。每种编程语言都有它的利基领域,比如Python用于机器学习,Go和Rust用于系统编程,Java和Node.js用于企业应用开发等等。
Java的优势在于建立大型企业应用程序,而不是在控制台中打印 "Hello World"!!!。Java生态系统的发展是为了满足企业的需求,并提高开发人员的生产力。在一个典型的企业商业应用中,你需要通过与其他几个外部系统的集成来构建复杂的业务流程,以及与关系型数据库、NoSQL数据库、消息传递系统、缓存提供商、云服务等进行交互。
需要学习和了解大量的东西才能有效利用这种快速应用开发平台。这是为了实现这种生产力可能需要付出的代价。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
零基础学Java编程需要经历哪些过程?
随着大数据、物联网、云计算等新兴技术的发展,Java凭借着在这些领域中的广泛应用,成为了程序员学习编程语言的首选。因此从就业的角度考虑,人才需求大还是比较容易就业的。那么,如果你是一个零基础Java的初学者,需要经历哪些过程呢?
4999
2019-09-26 12:04:28
Java在线培训学习周期要多久?
Java的学习周期要多久,需要结合学习者的基础和接受能力具体分析。如果是一个零基础的Java初学者,按照大多数培训机构的课程安排来学,Java的基础语法还有一些主流框架之类的理论知识就需要四个月左右的学习周期,再加上两个多月的实战项目开发演练,总共需要大概半年的时间。如果大家觉得脱产学习半年压力很大,也可以考虑Java在线培训,学习周期也是差不多的。
5908
2020-05-25 10:47:54
Java编程八大技能你还不会?
Java编程八大技能你还不会?随着大数据的快速发展,应用范围超广的Java编程语言越来越被看好。许多人包括在职程序员也兴致勃勃也报了Java编程课程,你是否也下定决心要进入Java开发呢?在大家进行Java培训学习之前,想和大家说明一个问题。Java技术的世界是多元而复杂的,需要程序员不断学习。想入行必须做好吃苦的准备。而要想作为互联网Java工程师这些基础技能必须要掌握。
4325
2020-06-12 14:31:18
Zookeeper从入门到实践要学什么?
ZooKeeper是一种分布式协调服务,它用简单的架构和API,解决了在分布式环境中协调和管理服务的难题。那么,Zookeeper从入门到实践要学什么呢?以博学谷相关的免费课程为例,课程主要讲解了包括集群结构、集群配置、常用命令、部署模式、Zab协议、Dubbo架构等重要核心知识,并结合经典售票案例与实际应用。
5041
2020-06-26 18:22:26
进阶Java中级程序员学习路线知识点汇总
企业对于中级程序员的任职要求:有两年以上Java开发经验,熟悉设计模式;熟练使用MySQL或Oracle数据库,熟练使用tomcat应用程序服务器;熟悉hibernate,spring,struts或ibatis 等主流技术框架;使用eclipse、svn、cvs、pl/sql等工具;有丰富的J2EE开发经验;有工业信息化开发经验或熟悉Modbus、OPC协议者优先。
6607
2020-08-28 16:11:03
