以Web方向为基础的java学习路线

在没有自学java之前,我还只会一点点C语言,也就是才熟悉什么叫变量、运算符、标识符,会点简单的循环来做迭代类的数学运算,又或者用符号打印图形等等。然而现在看来,这些已不足以视为有C的基础,顶多只能算有一点点编程基础。
现在我搞了java九个月了,因为最初开始搞java的时候就认定了自己要往Web路线发展,没有考虑太多的行业发展前景以及“钱“景等等问题。在开始着手学习之前,我花了很多时间和精力往返于有关java的各大博客、知乎、贴吧等论坛,偶尔看到有程序员写一些个人成长学习经历的帖子,职业生涯的总结性文章,又或者是个人对于行业的看法与吐槽,作为一个路人丁,自己也慢慢的形成一个对于java的初印象。即使是听到过很多关于安卓、ios的呼声,以及它们离谱而诱人的薪资水平,我还是以自己的其他方面的想法和一点点执念走了过来。
不管是web、安卓乃至其它编程语言如PHP、C#、Swift、Python、Ruby等,我始终觉得确定方向和学习路线在学习过程中有很大作用,当你知道自己要学什么,先学哪个,怎么学等等问题之后,学习起来不会轻易感觉枯燥和茫然,除非你真的没有踏实的去做这件事,或者真的是不适合这一行。有了方向,一方面在学习过程中,会有潜意识的短期目标作用,从而保持一定的学习进度和效率。另一方面,当你了解了今后可能接触的实际开发中,哪些技术运用更多对自己来说正是学习的侧重点,这样当你在实践阶段也会很快的进入状态,驾轻就熟。


###下面进入正题部分,以web方向为基础的java学习路线:
(由于java真正的知识范围很广,这里只罗列出我个人觉得重要的,至少是web中用的上的东西。)

  1. 一.J2SE阶段
    ·java基础【变量、运算符、标识符等】
    ·面向对象【封装、继承、多态】;
    ·API;
    ·集合框架【List、Map】;
    ·泛型;
    ·IO流;
    ·多线程;
    ·JDBC;
    ·正则表达式;
    ·高级特性【枚举、装箱拆箱、反射、断言、注解等】

在j2se阶段,重在熟练掌握if语句、for循环的运用,接口、继承、构造方法的理解和使用,学会查API文档。这个阶段的难点在于集合、泛型、jdbc等内容,需要了解其基本的用法和意义。


  • 二.数据库阶段
    ·sql server;
    ·Mysql;
    ·Oracle;

数据库阶段可以说是从只会编一些没什么实际作用的死程序,到能够开发小型项目的转折点,以上三种数据库至少掌握其中一种,个人建议从Mysql入手。当然数据库的种类不止这三个,这里所列的是行内使用最多的数据库。


  • 三.Web前端基础
    ·html;
    ·CSS ;
    ·Javascript(JS);
    ·DOM;
    ·ajax;
    ·jQuery;

做后端的人,前端的基础也是必不可少的。如果以后想做前端的话,js是关键,作为风口浪尖上的热门语言,js拥有一大批拥护者认为它将是十年后的大趋势,然而也有一些人认为js的灵活性又造成了其过于复杂的代码和混乱的逻辑,在开发中容易出错且难以调试。不过html和js的基础用法对于任何web开发人员来说都是尤为重要的。


  • 四.Web后端基础
    ·JSP;
    ·JavaBean;
    ·Servlet;
    ·过滤器、监听器;
    ·EL表达式语言;
    ·jsp自定义标签;
    ·JSTL标准标签库;
    ·MVC开发模式(JSP+Servlet+JavaBean);

后端基础个人建议以Servlet为中心来学习,因为servlet和java有着更紧密的联系,而jsp又是sevlet的简化抽离,就算是MVC的Model2开发模式(jsp+servlet+javabean),servlet也是作为核心的控制层,它更是开源框架的技术基础。


  • 五.开源框架
    ·Struts、
    ·Hibernate、
    ·Spring;
    【SSH整合框架】

·springMVC;
·Mybatis
·Ibatis;
【SSM、SSI整合框架】

首个mvc模式的开源框架Struts以及后来的Struts2推出至今已经盛行了14年了,随着Spring等框架的推出和发展,使得Struts2由于大量的配置文件和独家标签库而显得相对笨重许多。在学习这些开源框架的过程中,首先要掌握工具的基本用法,熟悉框架在后台做了什么,实现流程是什么。另外重要的就是要清楚这些框架之间如何搭配,同类功能的框架之间有什么优缺点,这样当你在构建自己的应用的时候就可以根据需要选择最佳的组件了。


  • 六.开发工具
    初级开发工具:(这里需要在初学阶段掌握,为了模块分类清晰,放在此处)
    ·JDK、Tomcat;
    ·eclipse/Myeclipse;
    ·Navicat;

高级开发工具:
·Maven项目管理工具;
·Git分布式版本控制系统;
·ANT代码生成工具;
·SVN/CVS/VSS版本控制工具;

这里罗列的是一些用户量多、影响范围广的几种工具,看公司或个人的喜好来选择适合自己的开发工具。


  • 七.专项领域
    ·算法;
    ·并发编程;
    ·设计模式;
    ·敏捷开发;
    ·需求分析;
    ·测试;
    ·运维;
    ·数据挖掘;
    ·网络安全;

在这里你可以选择你要从事的更加细致专业的开发任务,或者说选择做软件开发过程中的哪一个模块,技术要求更加的精益求精。


  • 八.流行组件
    ·Node.js;
    ·AngularJS、React.js、Vue.js;
    ·Shiro、WebService;
    ·NIO、Netty;
    ·JTA;
    ·JNDI;
    ·集群:Zookeeper;
    ·负载均衡:Lvs、Nginx;
    ·JMS消息中间件:ActiveMQ、RocketMQ、RabbitMQ、Kafka
    ·NoSQL:MongoDB、Redis、Hbase;
    ·分布式;分布式事务、分布式锁、分布式缓存、分布式Session;
    ·面向服务架构;SOA、Dubbo分布式服务、SpringCloud微服务;
    ·容器技术:Docker、K8s;
    ·大数据;Hadoop、Spark;
    ·搜索引擎;Lucene、Solr、ElasticSearch;
    ·机器学习;推荐算法、Learn to rank排序学习、信息检索;

这里是目前业界最主流的一些组件了,基本属于开源组件,这些组件都对应用中的特定细分任务抽离出来,进行了任务实现过程的封装,让用户仅通过简单的安装配置就可以使用其内部强大高效的功能。当然除此之外,还有一些大公司内部会自己开发中间件来适应自己的需求。


##小结:
总体来说,java分J2SE和J2EE(以前还有支持移动设备的J2ME,不过如今已被android,ios等取代),J2SE属于java编程的基础,最重要的是面向对象特性的掌握及其编程思想的理解。J2EE领域在以上所述路线中包括了web前端、后端以及开源框架三个部分,还有一些已经被取代的技术或者正在新兴的技术,J2EE属于企业级开发技术,这些内容正是当今各大企业一直在用的东西。就比如BAT的阿里巴巴,在网站建设初期时曾用.NET框架来搭建自己的平台,后来因为互联网行业的迅速发展,java的盛行,数据量和访问量的爆炸式增长,.NET已经满足不了广大互联网用户的需求,后来取而代之的便是J2EE的框架技术。然而我认为编程技术没有因为谁取代谁就断言谁好谁坏,只有适合不适合,因为业务需求的多样性,技术用来解决问题的优势往往在另一个场合会暴露出它的劣势。

说了这么多关于业界的内容,回头终究还是要以java的基础为重中之重,不管往安卓还是web方向都是如此。有很多技术大牛都认为,当自己做的东西越复杂,产品运用越广泛的时候,涉及的业务逻辑以及关键的技术问题往往都是更接近于java实现底层,何为java底层呢?比如jvm虚拟机运行机制,线程机制,内存机制,类加载机制等,也就是说,再强大的工程技术能力最后还是要回归到java本身上来,因为很多情况下达到性能瓶颈,使用底层调优策略要比应用架构层面的优化效果来的更高效及时,而且对应用架构做优化往往带来的是巨大工程调整任务,任务繁重且难免造成新的问题。所以如果应用本身已经成熟或早已正常运作很多情况下,相比架构调整,底层调优将是一个最好的选择,比如JVM调优、SQL调优、Tomcat调优、组件的底层调优等。

以上是我个人眼里的向Java-Web发展的路线以及学习思路的见解,由于是本人入坑java至今第一次写博客,所以选择了这个话题,以后将不定期更新一些在具体编写代码过程中可能遇到的问题和相关解决办法。限于博主文笔一般,知识水平有限,难免有片面和疏漏之处,敬请指正~

  • 8
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值