当前位置: 移动技术网 > IT编程>开发语言>Java > 关于Java学习的一些补充

关于Java学习的一些补充

2019年04月19日  | 移动技术网IT编程  | 我要评论

最近写过些java学习相关的文章。发布之后,通过留言或私信,我又收到了不少很有价值的问题。所以就通一整理分享下。

关于spring boot

spring boot是目前学习和应用的热点,所以就有不少人说:“spring和spring mvc已经过时,不需要再学习了”。

在我看来,上面的观点是极端错误和不负责任的。

从设计目标来说,spring boot只是实现了spring的自动化配置,降低了项目搭建的复杂度。

从技术上说,spring boot的底层依然是spring的核心机制,包括ioc、aop,以及实现者 - spring容器。所以,spring boot作为一个承载者。如果承载的是web项目,spring mvc该怎么工作,还是怎么工作。

与“传统”程序不同,spring应用主要通过配置、注解,然后由spring容器统一装配运行。因此,如果程序员不能对底层机理做到“了然于胸”,则对整个系统的运行逻辑必然是“云里雾里”。

因此,在实际项目中,spring系统一旦出了问题,许多“半吊子”程序员就会感到不知所措。为了快速“解决”问题。只得在spring配置上胡乱折腾。所以到最后,很多spring程序(包括业界著名公司)都被改的面目全非,腐败不堪,充斥着各种冗余和冲突。

而spring boot虽然简化了spring配置,但同时也使程序离spring本质越来越远。整个程序的运行逻辑更加“云里雾里”。一旦出了问题,更加令人不知所措。

所以,从程序的健康出发,从程序员的职业发展出发。spring boot的开发者,反而更有必要掌握spring的底层原理,正所谓“无真相不自由”。

而且,以我的经验。如果你扎扎实实从spring基础一路走来,到了spring boot这里,也就是“临门一脚”的问题。因此,学习spring,最“正”的路径依然如下:

spring -> servlet -> spring mvc -> spring boot

jpa与hibernate

jpa作为一个持久化规范,仅定义了or映射的规范(包括一系列注解),但本身并没有具体的实现。

在实际应用中,jpa的具体实现既有hibernate,也可以通过spring和把jpa和mybatis结合起来。但因为hibernate的高可配性,因此从概念设计上来说, hibernate对jpa的实现显得更加“自然”。

但是,无论是业界还是我本人,偏爱mybatis的原因和jpa关系不大,关键是因为hibernate相对不够灵活,从而带来的高学习成本和调优成本。

当然,毫无疑问,hibernate是一个非常优秀的框架。至于你所在的团队是否选择它,肯定是综合考量的结果。其中既包括团队的技术现状(例如是否有hibernate大牛),也包括项目的规模,及灵活性需求等。

而在其他文章中,我对hibernate的观点,主要是针对高效学习来讲的,毕竟人的精力是有限的。

关于大数据

前面的两篇文章,面向的主要是java web开发者。

当然,java开发,除了web,还有大数据等方向。虽然都是学习java,但内容肯定有所偏重。这里我就简单阐述下,以免对其他方向(例如大数据)的学习者有所误导。

做大数据开发,无论是做hadoop的map reducer,还是storm的topology(拓扑),最常见的实现方式还是java。从这一点来说,对java基础知识的学习,大家都是一样的。

但差别在是否要学习spring?这决定于你对自己的定位!

如果你把仅自己定位在数据处理上,只需编写map reducer或topology,那么你完全可以不学习spring。

但是,一个完整的大数据系统,必然是一个综合系统。其中包括系统配置、数据的收集、传输、存储、展示等子系统。而如何把这些子系统整合成一个综合系统,则是spring的专长,这也是javaee面临的核心问题。

因此,从系统开发角度来说,大数据开发者依然应该学习spring。只不过从优先级上来说,完全可以把spring往后排一下。

最后

上面是我的一家之言,肯定有错谬之处,见谅!

祝好!

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网