coreJava_1——Linux下安装配置jdk及Java程序运行原理

一、jdk环境配置

1、在终端中找到已下载好的jdk包位置,如jdk-8u91-linux-x64.tar.gz,在/home/Desktop

2、将文件解压放在/opt

sudo tar -xzvf jdk-8u91-linux-x64.tar.gz -C /opt

注:

-c建立压缩文件

-x解压缩文件

-z使用gzip压缩

-v显示所有过程

-f指定创建的文件名(注意-f后边只能接文件名,如-fc test.tar.gz错误)

3、为方便后期jdk的升级维护等,建立软链接(或快捷方式):到解压目录下,建立名称为jdk的软链接指向解压后的jdk1.8.0_91 jdk

cd /opt

sudo ln -s jdk1.8.0_91 jdk jdk

4、配置初始化文件(注意修改>bashrc前做好备份)

cd ~

vim .bashrc

在最后添加以下内容:

export JAVA_HOME=/opt/jdk   

export CLASSPATH=$CLASSPATH:.

export PATH=$JAVA_HOME/bin:$PATH


注:JAVA_HOME :指定jdk的安装目录,配置的目的是其他

第三软件启动的时候会默认到环境变量中加载JAVA_HOME

e.g. : tomcat(服务器)

CLASSPATH java程序执行被装载到JVM虚拟机中(内存中)

JVM虚拟机通过CLASSPATH找到你编写的代码

PATH: 可执行的命令存放的路径,将来命令的执行就是基于PATH找到的

(注:1. PATH环境变量。作用是指定命令搜索路径,在命令行下面执行命令如javac编译java程序时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序。我们需要把jdk安装目录下的bin目录增加到现有的PATH变量中,bin目录中包含经常要用到的可执行文件如javac/java/javadoc等待,设置好PATH变量后,就可以在任何目录下执行javac/java等工具了。

2. CLASSPATH环境变量。作用是指定类搜索路径,要使用已经编写好的类,前提当然是能够找到它们了,JVM就是通过CLASSPATH来寻找类的.class文件。我们需要把jdk安装目录下的lib子目录中的dt.jar和tools.jar设置到CLASSPATH中,当然,当前目录“.”也必须加入到该变量中。

javac -c  路径 (可以指定class文件存放目录)

java -cp  路径  (可以指定要执行的class目录)

3. JAVA_HOME环境变量。它指向jdk的安装目录,Eclipse/NetBeans/Tomcat等软件就是通过搜索JAVA_HOME变量来找到并使用安装好的jdk。


5、保存退出

6、验证

运行java、javac、java -version

二、jdk目录结构

bin: 存放java的执行命令,该目录应当保存到PATH变量中

Lib:是JDK工具用到的类库及其他文件,eg:tools.jar就包含了对开发工具的支持功能库

jre: java的运行环境(包含了java的类库和JVM虚拟机)

src.zip:jdk提供的类库的java代码

db:jdk自带的小型数据库

Include:包含c语言编写的文件

jre/lib/rt.jar jdk提供的类库的字节码 ,

对应的java代码在src.zip

三、Java特点

1、加速开发,写一次,到处运行,支持程序多线程的出来,动态的支持升级及编译

2、没有指针,不需要管理内存,纯粹的面相对象编程

3、提供gc的支持

4、垃圾回收器(GC)

垃圾回收器:java中有一个线程,专门负责JVM中垃圾内存的释放

垃圾:没有引用的内存节点

5、垃圾回收的算法

注意:有垃圾回收相关方法java.lang.System.gc()、java.lang.Runtime.gc(),但还是无法控制垃圾回收机制

算法有:标记-清除,复制,标记-整理,分代收集

四、Java程序执行的整个流程

Hello.java- -编译 ->Hello.class- ClassLoader装载- ->JVM- ->字节码验证

- ->对字节码逐行解析(解释执行)- ->执行

- ->JIT(即时编译) - ->执行

五、JVM装载.class文件到内存的双亲委托机制

1、启动级类加载器(Bootstrp ClassLoader)用C++语言写的,它是在Java虚拟机启动后初始化,它主要负责加载%JAVA_HOME%/jre/lib,

-Xbootclasspath参数指定的路径

以及%JAVA_HOME%/jre/classes中的类

2、扩展级类加载器(Extension ClassLoader)用java语言写的,它负责将%JAVA_HOME%/jre/lib/ext或者由系统变量 java.ext.dir指定位置中的类库加载到内存中。开发者可以直接使用标准扩展类加载器。

3、本地类加载器(Applicaiton ClassLoader)用java语言写的,用于加载我们自己定义编写的类,它负责将系统类路径(CLASSPATH)中指定的类库加载到内存中。开发者可以直接使用系统类加载器。由于这个类加载器是ClassLoader中的getSystemClassLoader()方法的返回值,因此一般称为系统(System)加载器

4、双亲委托机制加载类的过程

当本地类加载器加载一个class时,它首先不会自己去尝试加载这个类,而是把类加载请求委派给父类加载器扩展级类加载器去完成。

当扩展级类加载器加载一个class时,它首先也不会自己去尝试加载这个类,而是把类加载请求委派给BootStrapClassLoader去完成。

如果启动级类加载器加载失败,会使用扩展级类加载器来尝试加载;

若扩展级类加载器也加载失败,则会使用本地类加载器来加载,

如果本地类加载器也加载失败,则会报出异常ClassNotFoundException。

案例:如果把编译后生成的.class打包为.jar,并把该jar包移到扩展级类的目录下(如%JAVA_HOME%/jre/lib/ext),那么运行java hello仍可成功运行。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容