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连接池(阿里巴巴研发)优点如下:
- 可以监控数据库访问性能,这对于线上分析数据库访问性能很有帮助;
- 替换DBCP和C3P0。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池;
- 数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback;
- SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog;
- druid集群可以很方便的扩容到PB的数据量,每秒百万级别的数据注入。即便在加大数据规模的情况下,也能保证时其效性;
- druid既可以运行在商业的硬件上,也可以运行在云上。它可以从多种数据系统中注入数据,包括hadoop,spark,kafka,storm和samza等;
- 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很多,而且还是主力军。
作者:小码君
链接:https://juejin.im/post/5c20a61ee51d45342a253971
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。