他们好,我是磊哥。
2023 年 Java 往生成功之路自学走线
2022 新 Flowable 400 讲Sourceforge
我碰触 Java已近20年了,缔造了很多Java控制技术社会变迁,主要包括:
JavaEE架构,从千家争夺战到那时Spring基本上改朝换代。
Web合作开发,从标准配置的SSH到那时SpirngMVC + MyBatis女团。
IDE,从前年热火朝天的JBuilder到Eclipse,再到更快用的IDEA。
责任编辑,我主要就谈呵呵那些Java科学知识“早已落伍”,没必要性竭尽全力自学了。您也能把责任编辑看作上首诗的补足。
我推论的依照主要就有几点:
1、
前述合作开发若想加进?
2、与否有利于增进对控制技术的认知?
3、 对复试与否管用?JSP
JSP在前述合作开发中,主要是做为MVC数学模型中的V(View)层再次出现的。总之,View层的图形控制技术除JSP,除了FreeMaker、Velocity等。
JSP做为网页模版,在后端透过MVC架构图形成HMTL,接着再发送至应用程序(比如应用程序)来呈现出。这也是他们常说的“其间端不分离”,“混合式”合作开发。
而当前,主要包括我所在的公司,以及大部分互联网公司。要么早已抛弃这种模式,要么正在抛弃的路上,而转向彻底的“其间端分离”。
这样,在后端,原来的MVC架构,某种意义上早已演变为MC架构。因此,与V(View)相关的一切模版控制技术都失去了自学的必要性,其中总之也主要包括JSP。所以,后来的Java自学者,我的建议是:
“_完全能放弃对JSP的自学_。”
注 意文末有:7701页互联网大厂复试题Struts
在Java后端合作开发中,MVC数学模型还是主流。而Struts做为一个MVC架构,单从控制技术上来说,还是很优秀的。
但是,那时Spring实在是太强势了,越来越成为Java合作开发中的“一站式”工具包,其中的一个利器是Spring MVC。
望名知意,Spring MVC也是一个MVC架构。而且因为它是Spring的亲儿子,自然和Spring契合的非常完美。
同时,在设计之初,Spring MVC就参照了其他MVC架构的优缺点(主要包括Struts),所以用起来非常爽。因此,在MVC架构领域,Spring MVC大有改朝换代的趋势。
因此那时,很多公司,老的Struts项目还在维护。但新的项目开发,更多转向了Spring MVC。因此,如果你是Java新手,正在自学中,我的建议是:
“_千万别再自学Struts了,从Spring MVC开始吧!_”
Hibernate
Hibernate做为老牌的OR映射架构,功能非常强大,涵盖面非常广。但这既是它的优点,同时也成为它的“负担”,是合作开发人员“不能承受之重”。
Hibernate的设计初衷,是为了最大程度的解放程序员,完全隔离数据库,实现彻底的OR映射。程序员甚至能不写一行SQL语句,单透过配置就能实现对数据库的操作。
总之,为了实现这个目标,Hibernate也设计的非常复杂、非常精巧。就不可避免的带来以下副作用:
1、
自学成本高
2、配置复杂
3、 调优困难前两点不难认知,单说“调优困难”。
因为Hibernate的设计目标是彻底的OR映射,彻底的隔离SQL语句。但必然会带来一定的性能损失。大部分情况下,应用如果对性能不敏感,Hibernate也没问题。但应用一旦对性能敏感,有SQL级别调优的需求,Hibernate的优点反而成为缺点。
虽然Hibernate也支持SQL级别的调优,但因为架构设计的过于复杂和精巧,这就需要合作开发人员对Hibernate认知的非常透彻,这就带来了更高的自学成本。
而那时最流行的MyBatis,做为一个“混合式”,轻量级OR映射架构,既继承了Hibernate的优点,同时也吸取了他的教训。在支持配置的同时,又能碰触SQL,从而带来了更多灵活性(主要包括调试、优化)。
当前,在前述合作开发中,Hibernate使用的越来越少了。他们更偏爱MyBatis这种轻量级架构。所以,对后来自学者,我的建议是:
“_不需要再自学Hibernate了,学MyBatis就够了_。”
Servlet(要精通)
总之,那时不会有任何公司,再用纯粹的Servlet来时实现整个Web应用,而是转向一些更高级的控制技术(比如各种MVC架构)。因此,会给人一种错觉:Servlet早已落伍,后来者就不需要再自学了。
在这里,我能非常负责任的说:这种观点是极端错误,极端不负责任的。
Servlet不仅要学,而且要学深,学透。
当前,Servlet虽然不再是一个主流web合作开发控制技术,但依然是Java Web合作开发控制技术的基础,是Java Web容器的基石,是行业标准。而那时流行的各种MVC架构(主要包括SpringMVC),在最底层,还是以 Servlet为基础的。
为此,我画了一个简单的图(不准确,会意即可):
所以,如果你想要彻底掌握某个MVC架构,则必须彻底认知Servlet。
而且,Servlet做为一个基础设施。精通它,不仅有利于认知各种MVC架构。即使Servlet本身,也有很多实用价值。
如果你深刻认知了Servlet的生命周期,就能在底层做很多事情。譬如在Request进来的时候,进行拦截,进行权限的判定。也能在Response发出的时候,进行拦截,统一检查、统一附加。
所以,如果你正在自学Java,对Servlet,我的建议是:
“_Servlet不仅要学,而且要学深,学透_。”
其他
目前在国内,Java更多是做为web后端控制技术再次出现的。因此在前述自学中,很多控制技术就不符合“国情”,自学的现实意义不大。下面我就简单列举下。
1.Applet做为网页插件控制技术,不用多说,连flash都快被出局了,更无论从未流行的applet。
2.Swing做为桌面UI架构。且不说本身设计的咋样。现实合作开发中,我碰触的桌面应用,要么用C++(比如MFC),要么用C#(Winform、WPF)。所以,Swing就没有自学的必要性了。
3.JDBC做为较低层的数据库基础设施,JDBC被很多架构(比如MyBatis)支持。但在前述合作开发中,程序员即使不了解也无大碍。因此,虽然我不能建议你放弃JDBC自学,但如果你时间有限,完全能把它的优先级排低一点。
4.XMLXML那时还在广泛应用。但做为一个web数据传输格式,正在逐渐被JSON替代。所以,对Java后端自学来说,XML简单了解即可。至于庞杂的XML操作API(比如XPath),完全不必自学。将来真要加进,再查也不迟。
原文:hihu.com/question/305924723/answer/557800752
2023年Java往生成功之路自学走线
2022 新 Flowable 400 讲Sourceforge
近期控制技术热文
往期推荐
真的要替换掉Postman吗?
Java反射和new效率对比,差距有多大?
线程池执行的任务抛出异常会怎样
比 MyBatis 快 100 倍,天生支持联表!
主要包括 Java 集合、JVM、多线程、并发编程、设计模式、算法调优、Spring全家桶、Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、MongoDB、Redis、MySQL、RabbitMQ、Kafka、Linux、Netty、Tomcat、Python、HTML、CSS、Vue、React、JavaScript、Android 大数据、阿里巴巴等大厂复试题等、等控制技术栈!