从大层次讲java技术学习路线

223 阅读4分钟

Java从95年至今经过多年发展,由于各位前辈的不断创新,Java的成熟性已不可置疑;同时也导致java技术琳琅满目。那么在学习Java前我们应该如何选择技术方向呢?目前,哪些技术非常流行呢?另外,小编听到很多人说软件是吃青春饭的,30+混不好就没什么发展前途了,现实真实如此吗?针对以上问题小编从个人理解上梳理一下,意见不同者欢迎讨论。

JAVA SE(java基础)

java基础就不用说了,这是必须掌握的。重点要理解面向对象的思想,理解集合(List、Set和Map)的源码。

JVM部分

知道内存模型、工作原理和流程,JVM调优:参数和内存回收原理

页面层知识点

小编接触java最早是在大学期间,大学的教材一般都比较落后,像servlet、jsp,这两种技术是j2ee里最老的两门技术了。从工作至今我从未使用过jsp,现在互联网公司早已不使用。servlet大家还是有必要认真学一下的,它是MVC框架的核心,对我们理解MVC有很大帮助。

MVC框架知识点

MVC框架在大学学了Struts 2.x,现在也没有公司在试用。现今流行的MVC框架就是SpringMVC,这个肯定是要学习的,建议搞清其中的原理,对理解现在比较流行的springboot是一个很好的铺垫。

持久层知识点

持久层技术Hibernate和mybatis用的较多,这就是我们常说的SSH和SSM中的H和M。小编在毕业第一年主要用Hibernate,后来由于新项目选型mybatis,至今一直在试用mybatis,这两者小编更偏向也mybatis,原因如下表1

表1

对比方向 Mybatis Hibernate
上手难以程度
ORM 半自动化 完全的自动化
Sql配置文件
数据库无关性
SQL灵活性
性能
适合的行业 互联网 电商 传统的(ERP CRM OA)
社区活跃度

数据库连接池知识点

DB频繁地建立、关闭连接,会极大的减低系统的性能,因为对于连接的使用成了系统性能的瓶颈。这时我们可以使用数据库连接池来解决这个问题,如:c3p0、dbcp、druid和HikariCP。目前c3p0、dbcp已经被逐渐淘汰,国内目前比较流行的高性能的Druid连接池(阿里巴巴研发)优点如下:

  1. 可以监控数据库访问性能,这对于线上分析数据库访问性能很有帮助;
  2. 替换DBCP和C3P0。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池;
  3. 数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback;
  4. SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog;
  5. druid集群可以很方便的扩容到PB的数据量,每秒百万级别的数据注入。即便在加大数据规模的情况下,也能保证时其效性;
  6. druid既可以运行在商业的硬件上,也可以运行在云上。它可以从多种数据系统中注入数据,包括hadoop,spark,kafka,storm和samza等;
  7. druid拥有丰富的社区,供大家学习。

spring boot

学习完以上大家对Spring 框架一定会有更好地认识。几乎所有 Java 企业应用需要用到的基础组件都可以在 Spring 框架中找到。但在一个新应用中将所有需要的 Spring 组件整合并配置好并不容易,使用 xml集成所需组件和spring bean特别繁琐。为了解决这一问题Spring Boot 出现了,它是在 Java 中开发基于 REST 的微服务 Web 应用程序的最快方法之一。

微服务技术:SpringCloud、Dubbo

在国内目前使用最多的还是SpringCloud和Dubbo。看看他们提供了哪些支持
对比方向 Spring Cloud Dubbo
服务注册中心 Spring Cloud Netflix Eureka Zookeeper
服务调用方式 REST API RPC
服务网关 Spring Cloud Netflix Zuul
断路器 Spring Cloud Netflix Hystrix 不完善
分布式配置 Spring Cloud Config
服务跟踪 Spring Cloud Sleuth
消息总线 Spring Cloud Bus
数据流 Spring Cloud Stream
批量任务 Spring Cloud Task
看上去有很多功能Dubbo都没有,但它可以继承第三方组件很好的实现同样功能,甚至用起来比Spring Cloud更容易。Spring Cloud功能比较齐全(就像一个全家桶),Dubbo只是实现服务治理,需要用到其他组件,需要进行整合。

编程与年龄的关系

小编认为软件在我国发展比较晚,国内第一批从事java开发的目前也就是40+岁,由于当时开发人员也比较少,所有给人一种错觉:编程是吃青春饭的。不以为然的可以向java大数据方向发展,在方面大龄coder很多,而且还是主力军。