Java是后端开发中最常用的语言之一。Java的语言体系比较中性,具备构建多线程的能力。Java广泛应用于许多大型互联网平台。那么Java后端有没有实际用于开发的技术?Java后端有哪些不需要学习的技术?在实际开发中,JSPJSP主要作为MVC模型中的V(View)层出现。当然,除了JSP,View层的渲染技术还有FreeMaker、Velocity等。JSP作为页面模板,在后端通过MVC框架渲染成HMTL,然后发送给客户端(如作为浏览器)进行渲染。这就是我们常说的“前后端不分离”、“混合”开发。而目前,包括我的公司,以及大部分的互联网公司。这种模式要么已经被抛弃,要么正在被抛弃,正在转向彻底的“前后端分离”。“前后端分离”模式下,后端只负责提供服务接口(如REST),而前端(如HTML5)发送/获取和呈现数据(如作为JSON格式)通过接口。这样一来,在后端,原来的MVC框架在某种意义上就进化成了MC框架。因此,没有必要学习所有与V(View)相关的模板技术,当然也包括JSP。因此,后来的Java学习者,“_你可以完全放弃对JSP的学习了_”。Struts在Java后端开发中,MVC模式依然是主流。Struts作为一个MVC框架,从技术角度来说还是非常优秀的。不过,现在Spring实在是太强大了,越来越成为Java开发的“一站式”工具包,SpringMVC就是其中之一。顾名思义,SpringMVC也是一个MVC框架。又因为是Spring之子,与Spring自然契合。同时,SpringMVC在设计之初就参考了其他MVC框架(包括Struts)的优缺点,所以用起来非常爽。因此,在MVC框架领域,SpringMVC大有一统天下的趋势。所以现在,在很多公司,老的Struts项目还在维护。但是新项目开发,更多的转向了SpringMVC。所以,如果你是Java新手,正在学习,那么《_别学Struts了,从SpringMVC开始吧!_》HibernateHibernate作为一个老牌的OR映射框架,功能非常强大,涵盖面也很广。但这既是它的优势,也是它的“负担”,是开发者“难以承受”的。Hibernate的初衷是最大程度的解放程序员,完全隔离数据库,实现彻底的OR映射。程序员甚至不需要写一行SQL语句,只需要通过配置就可以对数据库进行操作。当然,为了达到这个目的,Hibernate也被设计得非常复杂和精致。必然会带来以下副作用:学习成本高、配置复杂、调优困难。前两点不难理解,就说“调优难”。因为Hibernate的设计目标是一个完整的OR映射,完全隔离SQL语句。但是不可避免的会带来一些性能损失。在大多数情况下,如果应用程序对性能不敏感,Hibernate就可以了。但是,一旦应用对性能敏感,需要SQL级别的调优,Hibernate的优势反而变成了劣势。Hibernate虽然也支持SQL级别的调优,但是由于框架设计过于复杂和精巧,这就需要开发者对Hibernate有非常透彻的了解,带来了较高的学习成本。现在最流行的MyBatis,作为一个“混合”的、轻量级的OR映射框架,既继承了Hibernate的优点,又吸取了他的教训。在支持配置的同时,还可以访问SQL,带来了更大的灵活性(包括调试、优化)。目前,在实际开发中,越来越少使用Hibernate。大家更喜欢MyBatis这种轻量级的框架。所以,对于后来的学习者来说,“_你不用再学Hibernate了,学MyBatis就可以了”。应用程序,而是一些更高级的技术(例如各种MVC框架)。因此,会给人一种错觉:Servlet已经过时了,后来者不用再学了。其实Servlet不仅要学,而且要学深、学透。目前,虽然Servlet不再是主流的Web开发技术,但它仍然是JavaWeb开发技术的基础,JavaWeb容器的基石,行业标准。现在流行的各种MVC框架(包括SpringMVC)底层还是基于Servlet的。所以,要想吃透一个MVC框架,就必须吃透Servlet。而且,Servlet作为一种基础设施。熟练掌握它不仅有助于理解各种MVC框架。甚至servlets本身也有很大的实用价值。如果您对Servlet生命周期有深刻的理解,您可以在幕后做很多事情。比如Request进来,拦截判断权限。也可以在Response发出的时候统一拦截、检查、附加。所以,如果你正在学习Java,对于Servlet的建议是:“_Servlet不仅要学,还要学深、学透_”。其他目前在国内,Java更多的是作为一种web后端技术出现。因此,在实际学习中,很多技术并不符合“国情”,学习的实际意义并不大。我将在下面简要列出它们。1、Applet是一种页面插件技术。不用说,连flash都快被淘汰了,更何况是一直没有流行起来的applets。2.Swing作为桌面UI框架。更不用说设计本身了。在实际开发中,我接触到的桌面应用要么使用C++(如MFC),要么使用C#(Winform、WPF)。因此,没有必要学习Swing。3.JDBC作为底层的数据库基础设施,得到了很多框架(如MyBatis)的支持。但是在实际开发中,即使程序员看不懂,也没有问题。所以,虽然我不能建议你放弃JDBC学习,但如果你时间有限,你绝对可以降低它的优先级。4.XMLXML现在仍然被广泛使用。但作为一种Web数据传输格式,它正在逐渐被JSON取代。所以,对于Java后端的学习,XML就是简单的了解。至于复杂的XML操作API(比如XPath),根本不用学。以后真要用的话,再查也不迟。
