Java到底怎么学?(一)Java生态体系扫盲篇
引言
相信曾几何时很多同学都想入坑Java,刚开始便被一堆陌生的技术名词(有过时的,有没过时的)弄的晕头转向,不知道该学哪个,剪不断理还乱,愁愁愁,别是一般滋味在心头。
苦于无人引导入门,便在网上查找资料从Java基础语法开始学习,数周后仍不知所学知识有何用武之地,于是便在Java技术体系下左顾右盼,在Java门前迷茫数月后,最终选择放弃。
其实,在学习Java相关具体技术之前,先将其技术体系、技术路线之类的东西理清楚,再埋头苦学才能真正入坑Java。
一、Java技术生态体系科普
Java是由Sun公司(后来被Oracle收购)于1995年5月推出的一种高级程序设计语言。
Java技术体系至少包括4个部分:
(1) Java程序设计语言
即:基本语法。
(2) 各种平台上的Java虚拟机(JVM)
JVM(Java Virtual Machine)即Java虚拟机,它是Java的一大特色,Java语言使用JVM这一魔法神器屏蔽了与具体系统和平台相关的信息,从而使得Java语言编译的程序只需生成在Java虚拟机上可运行的目标代码(字节码)即可,JVM会将字节码解释成具体平台的机器指令执行。这就是Java可以一次编译到处运行的原因。
(3) Java API类库
类似于C++中的STL(Standard Template Library)标准模板库。
(4) 一系列辅助工具
如javaC编译器等。
其中:
1+2+3+4 = JDK(Java Development Kit):即Java程序开发包,是支撑Java程序开发的最小环境。
2+3 = JRE(Java Runtime Environment):即Java运行时环境,是支撑Java程序运行的最小环境。
所以:JDK > JRE > JVM。
二、Oracle JDK vs Open JDK
去网上搜索JDK安装时,会发现有两种常见的JDK,即Oracle JDK和Open JDK。其中,Oracle JDK的前身是Sun公司搞出来的JDK;而Linux系统中默认装的是Open JDK。其实二者的核心库是差不多的,大家不必拘泥于此。两者主要区别如下(不必深究):
1、 授权协议不一样。
2、 Open JDK只包含JDK最精简的那一部分。
3、 Open JDK源码是不完整的,因为Sun时期的JDK中一部分源代码因为产权原因未开放给Open JDK使用。
4、 二者的核心库是差不多的,大家不必过于纠结。
三、Java技术体系所划分的三大平台
许多零基础的同学可能或多或少听过Java SE、Java EE和Java ME这三个概念,但不知道三者之间的区别,以及自己究竟该从哪一个入手学习呢?下面来具体谈谈:
(1)Java SE(Java Platform,Standard Edition)
其以前被称为J2SE。标准版主要用来开发传统C/S架构的软件。通俗地讲,即开发桌面应用程序。
(2)Java EE(Java Platform,Enterprise Edition)
其以前被称为J2EE。企业版是开发和部署可移植、健壮、可伸缩、安全的服务端Java应用,典型的就是企业Web服务。
(3)Java ME(Java Platform,Micro Edition)
微型版是为在移动、嵌入式设备上运行的Java应用提供的平台环境。
所以,Java EE才是我们该学习的!
所谓学Java EE,其实就是学Java EE的各种框架。
不管是早期的SSH(Struts+Spring+Hibernate,已过时)框架,还是现如今仍然火热的SSM(Spring+SpringMVC+MyBatis)框架,甚至今天更加先进的Spring Boot和Spring Cloud等都是Java EE的领域。看到了其繁荣性,我想大家应该无需有后顾之忧了,直接学就完事了。
四、到底哪一版JDK用的多?
1、JDK是不分Java SE、Java EE和Java ME的,它们安装的都是一个东西。
2、JDK版本更新迭代非常快,官方可下载的版本已经发布到JDK 11 LST(Long Term Support)长期支持版,连JDK 12都将要问世了。
3、但很多技术栈老一点的公司,JKD1.6甚至都还在使用中。
4、而JDK 1.8当下用的还是非常广泛的,我们学习的话装1.8足够了,出问题能查到资料有多一些。
后记
一些同学在学习完Java编程语言后,总觉得与实际运用之间隔着一条不可逾越的“鸿沟”。其实这条所谓的鸿沟就是“框架”这个东西。因为企业开发的项目不可能什么东西都是白手起家,而是基于现有的一些框架来实现的。
**小白们可以从目前比较火的Spring Boot框架入手,再后头学习SSM,进而进阶学习Spring Cloud等。**像SSH、JSP等很老的技术就不要再学了。
(内容主要来自CodeSheep的B站视频,特此鸣谢!)
关注**“阿汤笔迹”** 微信公众号,获取更多学习笔记。
原文地址:http://www.atangbiji.com/2020/04/10/JavaKnowledgeSystem/
博主最新文章在个人博客 http://www.atangbiji.com/ 发布。