关于Java学习的一些补充

最近写过些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往后排一下。

最后

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

祝好!

猜你喜欢

转载自www.cnblogs.com/java008/p/10730713.html