一、Java入门和环境安装
@Author : By Runsen
本专栏是零基础学java的第一篇
Java入门和环境安装(一)
文章目录
- 1、Java入门
- 1.1 了解Java
- 1.2 选择Java版本
- 1.3 下载jdk
- 2、Java面试题
- 2.1 JVM JDK 和 JRE的区别
- 2.2 Oracle JDK 和 OpenJDK 的对比
1、Java入门
1.1 了解Java
Java 本身是一种面向对象的语言,最显著的特性有两个方面,一是所谓的“书写一次,到处运行”(Write once, run anywhere),能够非常容易地获得跨平台能力;另外就是垃圾收集(GC, Garbage Collection),Java 通过垃圾收集器(Garbage Collector)回收分配内存,大部分情况下,程序员不需要自己操心内存的分配和回收。
我先把Java特性:都列举出来,下面专栏的文章都是基于Java特性的
- 面向对象(封装,继承,多态)
- 平台无关性(JVM运行.class文件)
- 语言(泛型,Lambda)
- 类库(集合,并发,网络,IO/NIO)
- JRE(Java运行环境,JVM,类库)
- JDK(Java开发工具,包括JRE,javac,诊断工具)
1.2 选择Java版本
Java 8是于2014年3月14号发布。从Java 8开始开发代号已经弃用了,所以从Java 8之后已经没有官方的开发代号了。
我们来看看Java SE的历史:
- JDK Beta - 1995JDK 1.0 -
- 1996年1月JDK 1.1
- 1997年2月J2SE 1.2
- 1998年12月J2SE 1.3
- 2000年5月J2SE 1.4
- 2002年2月J2SE 5.0
- 2004年9月Java SE 6
- 2006年12月Java SE 7
- 2011年7月Java SE 8(LTS)
- 2014年3月Java SE 9
- 2017年9月Java SE 10(18。3)
- 2018年3月Java SE 11(18.9 LTS)
- 2018年9月Java SE 12(19。3)
目前Java 14 GA(General Availability) 版本已经于2020年3月17日发布。
Java的一共有三个版本,分别是JavaSE,JavaME和JavaEE。
- JavaSE:标准版(桌面应用程序)
- JavaME:嵌入式开发(手机、家电)(不是很了解)
- JavaEE:企业级开发(服务器开发、web开发)(Out了)
我们使用的JavaSE,你可以下面Java11或者Java8版本进行学习,不建议下载Java14进行学习。
1.3 下载jdk
下载jdk这个很简单,你可以查看百度教程: https://jingyan.baidu.com/article/e75aca85b29c3b142edac6a8.html
菜鸟教程:https://www.runoob.com/java/java-environment-setup.htm
这两个教程不错。
这里提下需要设置环境变量,
JAVA_HOME :C:\Program Files\Java\jdk1.7.0_04
%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
设置完成后,直接java -version查看Java版本。
2、Java面试题
下面写下Java面试题,经常出现,大家需要搞定。
2.1 JVM JDK 和 JRE的区别
我们日常会接触到 JRE(Java Runtime Environment)或者 JDK(Java Development Kit)。 JRE,也就是 Java 运行环境,包含了 JVM 和 Java 类库,以及一些模块等。而 JDK 可以看作是 JRE 的一个超集,提供了更多工具,比如编译器、各种诊断工具等。
Java虚拟机(JVM)是运行 Java 字节码的虚拟机。JVM有针对不同系统的特定实现(Windows,Linux,macOS),目的是使用相同的字节码,它们都会给出相同的结果。
什么是字节码?采用字节码的好处是什么?
在 Java 中,JVM可以理解的代码就叫做
字节码
(即扩展名为.class
的文件),它不面向任何特定的处理器,只面向虚拟机。Java 语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以 Java 程序运行时比较高效,而且,由于字节码并不针对一种特定的机器,因此,Java程序无须重新编译便可在多种不同操作系统的计算机上运行。
Java 程序从源代码到运行一般有下面3步:
Java虚拟机(JVM)是运行 Java 字节码的虚拟机。JVM有针对不同系统的特定实现(Windows,Linux,macOS),目的是使用相同的字节码,它们都会给出相同的结果。字节码和不同系统的 JVM 实现是 Java 语言“一次编译,随处可以运行”的关键所在。
JDK是Java Development Kit,它是功能齐全的Java SDK。它拥有JRE所拥有的一切,还有编译器(javac)和工具(如javadoc和jdb)。它能够创建和编译程序。
JRE 是 Java运行时环境。它是运行已编译 Java 程序所需的所有内容的集合,包括 Java虚拟机(JVM),Java类库,java命令和其他的一些基础构件。但是,它不能用于创建新程序。
简单来说,JRE可以支撑Java程序的运行,包括JVM虚拟机(java.exe等)和基本的类库(rt.jar等),JDK可以支持Java程序的开发,包括编译器(javac.exe)、开发工具(javadoc.exe、jar.exe、keytool.exe、jconsole.exe)和更多的类库(如tools.jar)等。
2.2 Oracle JDK 和 OpenJDK 的对比
上面我们安装的是Oracle JDK ,也就是sunjdk。
Oracle JDK版本将每三年发布一次,而OpenJDK版本每三个月发布一次;
OpenJDK是Java SE Platform Edition的免费开源实现。它最初于2007年发布,是Sun Microsystems于2006年开始开发的结果。
OpenJDK主要用于linux系统,在响应性和JVM性能方面,Oracle JDK与OpenJDK相比提供了更好的性能;
一、Java入门和环境安装相关推荐
- Java入门及环境搭建idea安装和简单使用
Java入门及环境搭建 什么是Java Java Java是一门新的语言特点是: 语法有点像c 没有指针 没有内存管理 真正的可移植性,编写一次,到处运行. 面向对象 类型安全 高质量的类库 - Ja ...
- 【Java全栈学习笔记:第一阶段:JavaSE】:Java入门及环境搭建
Java全栈课程网站: KuangStudy JavaSE课程地址: 狂神说Java 参考书籍:Java大学实用教程(第四版) 目录 Java入门及环境搭建 Java帝国的诞生 Java发展 Java ...
- Java入门与环境搭建
Java入门与环境搭建 软件 ...
- 从 X 入门Pytorch——环境安装建议,Tensor多种构造方式,Tensor的基本操作
本文参加新星计划人工智能(Pytorch)赛道: https://bbs.csdn.net/topics/613989052 满打满算,入门CV的坑已经快一年了,现在忙着换模型,加模块,看效果. 但是 ...
- mysql tomocat vs2005_C# 制作Java +Mysql+Tomcat 环境安装程序,一键式安装
要求: JDK.Mysql.Tomcat三者制作成一个安装包, 不能单独安装,安装过程不显示三者的界面, 安装完成要配置好JDK环境.Mysql服务.Tomcat 服务 目的: 解决客户在安装软件的复 ...
- ubuntu java ide,ubuntu 环境 安装 C++ IDE Eclipse
ubuntu下的c/c++开发IDE环境搭建: 1.准备工作 JDK(点击就可以链接到下载地址).Eclipse.我的两个包:eclipse-inst-linux64.tar.gz,jdk-8u65- ...
- java简介以及环境安装
java2标准版, JavaSE,桌面程序,控制台开发 java2标准版, JavaME,嵌入式开发,手机,小家电 java2标准版,JavaEE,E企业级开发,服务器,WEB端,服务端 [外链图片转 ...
- java一键_Java环境安装-Java环境一键安装下载免安装版-西西软件下载
Java环境一键安装,一键安装包,安装Java环境,无需用户手动安装操作,非常便利,由论坛大神整合,双击运行程序可一键配置环境,可以根据需求来进行选择.本次带来Java环境一键安装工具下载,需要配置J ...
- jfreechart java配置_JFREECHART环境安装配置
[环境:操作系统Centos 7 64-bit3台节点 ip 主机名 10.91.99.101 master10.91.99.102 slave110.91.99.103 slave ...
最新文章
- 《自然语言处理中的因果推理》综述论文,以色列理工谷歌等13位NLP大牛阐述因果推理NLP的估计、预测、解释和超越...
- java 链表反转_LeetCode206 实现单链表的反转
- Linux服务器开发之:chmod()函数,chmod命令,以及文件屏蔽umask命令,程序修改umask,详细介绍+案例演示
- linux下安装mysql-5.6.41
- PYPL 12月榜单发布,编程语言、IDE与数据库市场如何?
- linux 测试程序性能,推荐一款Linux系统的性能测试软件
- 优秀学生专栏——孙振涛
- 设计模式(结构型模式)——装饰模式(Decorator)
- python 小说数据挖掘_Python 中的实用数据挖掘
- 计算机应用考试上机试,电大计算机应用考试机试实操ABCD.docx
- 《YOLO系列原理实战笔记》高清.pdf
- Python基础项目:超市购物管理系统
- Android的当前应用启动第三方应用(跨软件启动页面)
- [BUG 记录] Ubuntu下Tesla M40与其他N卡共存安装
- 【C++编程题】字符串子串替换
- 声明:博客内容不得用于商业用途,仅做学习交流。
- 遭遇盗取网络游戏帐号木马等
- css3绘制的钢琴代码
- skewx 字体模糊_为什么网站设计宋体消除锯齿要用无,而其他字体如黑体用平滑,还有英文字体要用那种消除锯齿方式?...
- 移植AT91Bootstrap1.15
热门文章
- oracle一个表更新另一个表多列,oracle sql更新表中多列值,值是从其它表中查询(select)得出...
- sap 获取计划订单bapi_sapbapi的清单.doc
- 双击背面截图_ios14怎么轻点双击背面截屏 敲击苹果手机背部截图设置教程
- es6 Map、Set和Array.from()
- android里面画布快照,自定义 View - Canvas - 画布操作和快照
- 【atcoder】GP 2 [agc036C]
- 16 input默认样式清除
- 【BCFTOOLS】按样本拆分VCF文件
- More is better
- 利用bind搭建dns