- 1、Java程序员的发展方向有哪些
- 2、请问艾编程教育,java进阶架构师到需要怎么成长?
- 3、请问从java工程师成为一名架构师的学习路线是什么样的?
- 4、Java工程师以后发展路径是什么?
其实Java可以做的东西实在太多了,网站、软件、手机游戏、电脑游戏、中间件以及现在流行的安卓手机app等,都是由Java语言编写的;除了这些,Java还有很多用途,家里的微波炉、洗衣机等家电也有可能是Java控制的。
1、编写网站
现在许多大型网站都是用Java编写的,比如我们熟悉的电子商务交易平台阿里巴巴、淘宝、京东都是使用Java编写的。
即使是简单的jsp、servlet,和以struts为基础的网站,在政府项目中也是很受欢迎的,例如保险、教育、医疗、国防等部门的网站都是以Java基础来开发的。
2、Android应用
Java做安卓不单单是系统,还有APP。对于如今的开发人员来说,他们更多的时间是花在开发APP上面。
你在Android手机上,随便打开一个App应用,都是用Java语言编写。虽然现在Android运用了不同的JVM以及不同的封装方式,但是代码还是用Java语言编写的。
3、大型企业服务器应用
很多大型企业管理系统、CRM系统,ERP系统主要使JAVA编写。例如移动、联通、电信等通讯行业的客户管理系统,快递公司的物流系统离不开Java;交通工具的订票系统绝大部分也是使用Java开发的。
4、做软件工具
一般来说,编程语言都可以做软件,Java也不例外,许多常用的软件和开发工具都是运用Java来编写和开发的,例IneteliJIdea、Eclipse,NetbansIDE等。
5、嵌入式领域及消费类电子产品
Java在嵌入式领域发展空间很大,对于嵌入式系统来说,Java技术因为比C语言和汇编语言有很明显的优越性,而受到了嵌入式领域的青睐,并得到了大量的研究与开发应用。
嵌入式设备及消费类电子产品,主要用JavaMe,信息家电(如数字电视、机顶盒、电冰箱)、无线手持设备、通信终端、医疗设备、汽车电子设备等都是比较热门的Java应用领域。
6、大数据技术
Java最大的优势之一是它在大数据领域的地位,目前很多的大数据的架构都是通过Java来完成的。
例如现在最主流的大数据框架Hadoop的应用主要用Java开发的;Apache的基于Java的HBase和Accumulo以及ElasticSearchas。
首先很感谢对我提问,Java进阶架构师是目前一个很明智的选择。目前架构师方面如果要学好需要有一定的Java项目经验,从事Java一年到三年以上时间更合适。
架构设计与思想:学习架构师要从架构思想和架构设计,学习怎么架构产品,接着要学会怎么绘制架构图。
构建架构能力:当了解这些体系之后就要开始学习从单体架构到集群化部署的一步一步大致分别为十五次架构演进的学习,需要学会业务架构、技术架构、应用架构、数据架构的部署能力;
高并发分布式的部署能力:掌握单体架构设计到高并发、分布式的大流量部署能力。
安全防护和流量攻击的防护能力:而且还要学会进行安全防护、流量攻击的预防等技术掌握哦。
对于java工程师成为一名架构师如何进阶学习及掌握应有的技能体系在这做出一些建议!同时大家可以到知乎专栏“动力节点视频教程资源库”看更架构师的文章,欢迎大家来关注阅读!
可以骄傲地说,Java程序员应该是这个世界上最为广泛的工程师群体。在最新的2019年3月编程语言排行榜中,第一宝座依旧是Java,可见Java强大的生命力。不过,我发现身边不少程序员朋友,对Java的掌握仅限于使用 Java 语言和 Java 生态里的技术框架做功能实现,很少有人去了解 Java 的底层动力 JVM 的运营机制,以至于技术水平和认知停滞不前,最终成了CRUD 研究员。
同时也为那些针对2到5年及以上工作经验的想在技术上提升到一定高度甚至想往架构师发展的Java程序员提供一份系统详情的架构进阶路线,从广度到深度架构图还比较全面的,里面的技术包涵了Java高并发、微服务、源码分析、源码分析、高性能、分布式等技术,这些也是目前互联网企业比较常用的技术,那么来详细看看。
JVM与性能优化
JVM作为Java语言的基础,虽然平时工作中真正运用到的时候可能并不多,一个程序员想要上升到高级层次,那就必须知道Java到底是怎么运行的,这就逃不开JVM。想要告别增删改查和简单开发,而是去做Java性能分析和调优工作,那么,Java虚拟机绝对是一把助力的利剑。学习Java虚拟机的原因,本质是让你了解Java程序是如何被执行且优化的。这样一来,你才可以从内部入手,达到高效编程的目的。同时,你也可以为学习更深层、更核心的Java技术打好基础。
框架源码解读
我认为有三个维度来说明:这个框架是为了解决什么问题而诞生的?这个框架的核心思想是什么?这个框架适合应用到哪些场景?说到思想,我觉得编程的灵魂就是思想,没有思想的编程和咸鱼没什么区别。“不要重复造轮子”,当时听了赶脚这句话挺高大上的,现在我认为这句话只能在某一方面是正确了。首先我来说一下为什么要学会造轮子–因为你会造轮子后,用别人的轮子时才会明白其原理,用的时候才会得心应手,如果你对一个框架的理解只是停留在用,用的多熟练的阶段的话,那么你就是一个“码畜”,别人随时可以替代你。或许有人会说,项目时间紧根本不允许你写一个轮子、你写的还有那些大牛们写的好吗等理由反驳。但我想说的是:我没说项目中非得用自己写的轮子,自己写的轮子不一定要和别人比,因为造轮子的目的是要理解这些轮子的思想。说这么多其实就是想告诉大家学习框架要理解框架的底层的原理,要掌握的就是最常用的原理。
分布式架构
近年来随着服务体系的不断庞大以及用户量的迅速增长,传统单一应用架构已经无法满足我们系统的需求,尤其是大型互联网系统的快速发展,各种灵活多变的系统架构模型层出不穷。分布式的处理方式越来越受到业界的青睐——计算机系统正在经历一场前所未有的从集中式向分布式架构的变革。同时分布式也成为Java程序员面试不可缺少的一部分知识,尤其是对现在工作2到5年的工程师来说分布式无疑不是一项加分技术。
微服务架构
虽然很多文章都说微服务架构是复杂的、会带来很多分布式的问题,但只要我们了解这些问题,并找到解法,就会有种拨开云雾的感觉。微服务架构也不是完美的,世上没有完美的架构,微服务架构也是随着业务、团队成长而不断演进的。最开始可能就几个、十几个微服务,每个服务是分库的,通过 API Gateway 并行进行服务数据合并、转发。随着业务扩大、不断地加入搜索引擎、缓存技术、分布式消息队列、数据存储层的数据复制、分区、分表等!
总结
不管是学什么技术,最终都需要你进行归纳、整理,才能把所学的东西变为自己的。工作为什么要写日志,平时学习为什么要写博客,其实就是在构建自己的知识体系。在学习的过程中多做笔记,多做总结,习惯一旦形成,久而久之,便会印在你的脑海里,你下次再被问到这一问题时,你就可以用自己之前总结过的内容来回答。
最近有些网友问我如何自学 Java 后端,还有些是想从别的方向想转过来,但都不太了解 Java 后端究竟需要学什么,究竟要从哪里学起,哪些是主流的 Java 后端技术等等,导致想学,但又很迷茫,不知从何下手。我就以过来人的经历,写在这篇博客里,不一定都对,但都是我根据自己的经历总结出来的,供你们的参考。
Java 基础
Java 是一门纯粹的面向对象的编程语言,所以除了基础语法之外,必须得弄懂它的 oop 特性:封装、继承、多态。此外还有泛型、反射的特性,很多框架的技术都依赖它,比如 Spring 核心的 Ioc 和 AOP,都用到了反射,而且 Java 自身的动态代理也是利用反射实现的,这里我特意写了一篇 Java动态代理原理分析。此外还有 Java 一些标准库也是非常常见,比如集合、I/O、并发,几乎在 Web 开发中无处不在,也是面试经常会被问到的,所以在自学 Java 后端之前,不妨先打好这些基础,另外还有 Java8 的一些新特性,也要重点关注,比如 Lambda 表达式、集合的 Stream 流操作、全新的 Date API 等等,关于新特性,我也写了几篇关于这方面的博客,请自行找吧,就不贴出来了。
关于书籍推荐,我是不建议初学者一开始就拿着「Java 编程思想」啃的,因为当初我就是那个当天下午决定自学 Java,晚上就抱着这本书啃的人,说实话,我当时真的不懂它在说啥,因为我没有一点的面向对象语言编程的基础,而这本书又写得太博大精深了,在当时的我来说,完全是天书,但是我认为它仍然是 Java 界的圣经,每读一次都有所收获。我在这里推荐你们一开始先看「Java 核心技术」,这本书讲得比较通俗易懂,初学者比较能接受。
关于视频推荐,我当初就是听某客的毕向东老师讲的 Java 基础教程,毕老师讲的实在是太生动有趣了,不知不觉把我带进 Java 的坑里无法自拔,有时候我会听他视频时笑出声来,也许是我那段自学阶段最有趣的时刻了。
数据库
关于 sql 方面:SQL 教程、MySQL 教程
我是了解了一些基础语法之后,就直接跟着视频的老师做一些表操作实战练习了,比如单表查询、多表查询等。我建议学 sql 切勿眼高手低,需多加练习,不要只看懂了就行,因为工作中写得一手简练的 sql 是非常重要的。在这里我说下我在项目一直秉承着 sql 语句是能避免多表查询就避免多表查询,能够分开多条语句就分开多条语句,因为这里涉及到多表查询性能和数据库扩展的问题。
关于 JDBC 方面:JDBC 教程、 JDBC 获取连接对象源码分析
你需要弄懂 JDBC API 的用法,其实它只是一组规范接口,所有数据库驱动只要实现了 JDBC,那么我们就可以通过标准的 API 调用相应的驱动,完全不用知道驱动是怎么实现的,这就是面向接口编程的好处。而且对于 JDBC 我是直接看视频去理解的,跟着视频做了一个基于 Apache Dbutils 工具做了一个具有事务性的小工具,我特意用思维导图总结了一下:
Web 基础
曾经开源中国创始人红薯写了一篇文章「初学 Java Web 开发,请远离各种框架,从 Servlet 开发」,我觉得他说的太对了,在如今 Java 开发中,很多开发者只知道怎么使用框架,但根本不懂 Web 的一些知识点,其实框架很多,但都基本是一个套路,所以在你学习任何框架前,请把 Web 基础打好,把 Web 基础打好了,看框架真的是如鱼得水。
关于 Http 协议,这篇文章就写得很清楚:Http协议
关于 Web 基础这方面数据推荐,我当时是看的是「Tomcat 与 Java Web 开发技术详解」,很详细地讲解了整个 Java Web 开发的技术知识点,但现在看来,我觉得里面讲的有一些技术确实有点老旧了,不过可以了解一下 Java Web 开发的历史也是不错的。所以在 Web 基础这方面我都是看某客的崔老师讲的「超全面 Java Web 视频教程」,讲得很详细很生动,还有实战项目!
关于 JSP,你只要了解它其实就是一个 Servlet 就行了,关于它的一些标签用法,我认为可以直接忽略,因为现在互联网几乎没哪间公司还用 JSP,除了一些老旧的项目。现在都是流行前后端分离,单页应用,后端只做 API 接口的时代了,所以时间宝贵,把这些时间重点放在 Servlet 规范上面吧。
关于 Tomcat,它是一个 Web 容器,我们写的后端项目都要部署到Web容器才能运行,它其实是一个遵循 Http,通过 Socket 通信与客户端进行交互的服务端程序:Tomcat结构及处理请求过程
Web 主流框架
Java Web 框架多如牛毛,等你有一定经验了,你也可以写一个 Web 框架,网上很多说 Spring、Struts2、Hibernate 是 Java 三架马车,我只想说,那是很久远的事情了,我严重不推荐 Struts2、Hibernate,相信我,一开始只需要上手 Spring、SpringMVC、Mybatis 就可以了,特别是 Spring 框架,其实 Spring 家族的框架都是很不错的。
但是提醒一点就是,千万不要沉迷于各种框架不能自拔,以会多种用法而沾沾自喜,导致知其然而不知其所以然。
Spring其核心思想就是 IOC 和 AOP:
谈谈对 Spring IOC 的理解
Spring 面向切面编程
SpringMVC 它的思想是全部请求统一用一个 Servlet 去做请求转发与控制,这个 Servlet 叫 DispatcherServlet:
SpringMVC 初始化过程
SpringMVC 处理请求过程
Mybatis 它可实现动态拼装 sql,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集:
mybatis 入门教程
Mybatis 深入浅出系列
Web 框架进阶
使用了 SSM 框架后,你会觉得框架也不过这么回事,如果你对 Spring 有过大概了解,你也会产生想写一个「山寨版」Spring 的心思了,一个轻量级 Web 框架主要具备以下功能:
可读取用户自定义配置文件,并以此来初始化框架;
具备 Bean 容器,管理项目的类的对象生命周期;
具备依赖注入,降低类之间的耦合性;
具备 AOP 功能,使项目可进行横向编程,可不改变原有代码的情况增加业务逻辑;
具备 MVC 框架模式。
其实除了 SSM 之外,Web 框架可谓是百家齐放,其中以 Spring 全家桶最为耀眼,在这里我极力推荐两个 Spring 家族框架:SpringBoot 和 SpringCloud。
SpringBoot 弥补了 Spring 配置上的缺点,再也不用为繁杂的 xml 费劲精力了,堪称是 Java 后端开发的颠覆者,推荐书籍「Java EE 开发的颠覆者:SpringBoot实战」
SpringBoot 构建 web 项目
SpringBoot 自动化配置源码分析
自定义 SpringBoot Starter
spring-boot-starter-tutorial
SpringCloud 是一个微服务架构,能够将项目按照业务分成一个个微服务,每个微服务都可独立部署,服务之间互相协调。当一个项目越来越大时,随之而来的是越来越难以维护,此时将项目拆分成若干个微服务、单独维护、单独部署,也可以降低项目不同业务间的耦合度。推荐书籍「Spring Cloud 与 Docker 微服务架构实战」,这本书将 Docker 与微服务完美地结合在一起,堪称完美!
Spring Cloud 中文官网
史上最简单的 Spring Cloud 教程
我写的有关于 Spring Cloud 的博客:
SpringCloud微服务架构之服务注册与发现
SpringCloud微服务架构之服务消费者
SpringCloud微服务架构之断路器
SpringCloud微服务架构之服务网关
其它技术
Redis:一个高性能的 key-value 数据库,当有并发量很高的请求时,将数据缓存在 Redis 中,将提高服务器的响应性能,大大减轻数据库的压力。
redis 中文官网
redis 教程
Git:世界上最先进的分布式版本控制系统,建议所有初学者从命令行开始使用 Git!关注 stormzhang 公众号「googdev」,回复「github」,即可免费获取一份 GitHub 教程电子书,我觉得写得很不错。
Git 官网
最全 Git 教程
Git 的一些常用命令
Maven:一个用于构建项目的工具,将项目间的依赖通过 xml 完美地组织到一起,可通过编译插件将项目编译成字节码文件。还有类似的 Gradle 也是不错的选择。
maven 的 pom.xml 文件详解
Linux:至少要求常用的命令会用,能够在 linux 环境下部署项目。
Linux 命令大全
最全的 SSH 连接远程终端教程
Docker:简直是项目部署神器啊,来不及解释了,看我 Docker 系列博客,开启 Docker 之旅吧!推荐书籍「Docker 技术入门与实战」,中国首部 Docker 著作!
Docker 实战(一)
Docker 实战(二)
Docker 实战(三)
docker-deploy-tutorial
开发工具
工欲善其事,必先利其器,以下是我推荐的一些开发工具:
Intellij IDEA:Java 开发最好的 IDE,这个是公认的,我一开始是用 Eclipse 的,后来用了 Intellij IDEA,才发现 Eclipse 就是一坨屎,所以我以过来人劝你们不要使用 Eclipse,直接 Intellij IDEA!
IntelliJ IDEA 使用教程
Iterm2:macOS 最好用的终端!
Iterm2 使用指南
Chrome:人生苦短,请用 Chrome,来不及解释了,快上车!
Postman:很好用的一个接口调试工具。
原创文章,作者:简单一点,如若转载,请注明出处:https://www.506064.com/n/127094.html