Java学习笔记(一):Java简介
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://mp.csdn.net/mdeditor/100565954
目录
- 绪言
- 编译型语言和解释型语言
- 三个版本
- 一些名词
- JDK和JRE
- JSR规范和JCP组织
- RI和TCK
- 安装JDK
- Hello world
- Eclipse
- 使用Eclipse
- Xmind
- 参考资料
绪言
最近开始学习Java,主要教材是廖雪峰老师的Java教程。为了巩固学习的成果,并作为以后查阅的参考,我计划写一系列学习笔记。
这是本系列的第一篇 – Java简介。
编译型语言和解释型语言
声明:本部分来源于下面这篇文章。
解释型语言和编译型语言的区别
我们编程一般都是用的高级语言,计算机不能直接理解高级语言,只能理解和运行机器语言,所以必须要把高级语言翻译成机器语言,计算机才能运行高级语言所编写的程序。
翻译的方式有两种,一个是编译,一个是解释。两者的不同是翻译的时间。
编译型语言写的程序执行之前,需要一个专门的编译过程,通过编译系统(不仅仅只是通过编译器,编译器只是编译系统的一部分)把高级语言翻译成机器语言,把源高级程序编译成为机器语言文件。以后就可以直接运行而不需要编译了,因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高,但也不能一概而论,部分解释型语言的解释器通过在运行时动态优化代码,甚至能够使解释型语言的性能超过编译型语言。
解释型语言编写的程序不需要编译。解释型语言在运行的时候才翻译,比如VB语言,在执行的时候,专门有一个解释器能够将VB语言翻译成机器语言,每个语句都是执行的时候才翻译。这样解释型语言每执行一次就要翻译一次,效率比较低。
编译型与解释型,两者各有利弊。前者由于程序执行速度快,同等条件下对系统要求较低,因此像开发操作系统、大型应用程序、数据库系统等时都采用它,像C/C++、Pascal/Object Pascal(Delphi)等都是编译语言,而一些网页脚本、服务器脚本及辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序则通常使用解释性语言,如JavaScript、VBScript、Perl、Python、Ruby、MATLAB 等等。
JAVA语言是一种编译型-解释型语言,同时具备编译特性和解释特性(其实,确切的说java就是解释型语言,其所谓的编译过程只是将.java文件编程成平台无关的字节码.class文件,并不是向C一样编译成可执行的机器语言,在此请读者注意Java中所谓的“编译”和传统的“编译”的区别)。作为编译型语言,JAVA程序要被统一编译成字节码文件——文件后缀是class。此种文件在java中又称为类文件。java类文件不能再计算机上直接执行,它需要被java虚拟机翻译成本地的机器码后才能执行,而java虚拟机的翻译过程则是解释性的。java字节码文件首先被加载到计算机内存中,然后读出一条指令,翻译一条指令,执行一条指令,该过程被称为java语言的解释执行,是由java虚拟机完成的。而在现实中,java开发工具JDK提供了两个很重要的命令来完成上面的编译和解释(翻译)过程。两个命令分别是java.exe和javac.exe,前者加载java类文件,并逐步对字节码文件进行编译,而另一个命令则对应了java语言的解释(javac.exe)过程。在次序上,java语言是要先进行编译的过程,接着解释执行。
三个版本
Java有三个不同的版本:
Java SE:Standard Edition
Java EE:Enterprise Edition
Java ME:Micro Edition
Java SE就是标准版,包含标准的JVM和标准库。
Java EE是企业版,它只是在Java SE的基础上加上了大量的API和库,以便方便开发Web应用、数据库、消息服务等,Java EE的应用使用的虚拟机和Java SE完全相同。
Java ME就和Java SE不同,它是一个针对嵌入式设备的“瘦身版”,Java SE的标准库无法在Java ME上使用,Java ME的虚拟机也是“瘦身版”。没有特殊需求,不建议学习Java ME。
Java SE的核心技术是基础,我现在也是在使用Java SE。
一些名词
JDK和JRE
JDK:Java Development Kit
JRE:Java Runtime Environment
JRE就是运行Java字节码的虚拟机。但是,如果只有Java源码,要编译成Java字节码,就需要JDK,因为JDK除了包含JRE,还提供了编译器、调试器等开发工具。
JSR规范和JCP组织
JSR规范:Java Specification Request
JCP组织:Java Community Process
为了保证Java语言的规范性,开发Java的SUN公司搞了一个JSR规范,凡是想给Java平台加一个功能,比如说访问数据库的功能,大家要先创建一个JSR规范,定义好接口,这样,各个数据库厂商都按照规范写出Java驱动程序,开发者就不用担心自己写的数据库代码在MySQL上能跑,却不能跑在PostgreSQL上。
RI和TCK
RI:Reference Implementation
TCK:Technology Compatibility Kit
比如有人提议要搞一个基于Java开发的消息服务器,这个提议很好啊,但是光有提议还不行,得贴出真正能跑的代码,这就是RI。如果有其他人也想开发这样一个消息服务器,如何保证这些消息服务器对开发者来说接口、功能都是相同的?所以还得提供TCK。
通常来说,RI只是一个“能跑”的正确的代码,它不追求速度,所以,如果真正要选择一个Java的消息服务器,一般是没人用RI的,大家都会选择一个有竞争力的商用或开源产品。
安装JDK
安装过程比较简单,就不做赘述了。
这里附上下载地址:
https://www.oracle.com/technetwork/java/javase/downloads/index.html
值得注意的是,安装好之后安装目录的bin目录下找到很多可执行文件:
java:这个可执行程序其实就是JVM,运行Java程序,就是启动JVM,然后让JVM执行指定的编译后的代码;
javac:这是Java的编译器,它用于把Java源码文件(以.java后缀结尾)编译为Java字节码文件(以.class后缀结尾);
jar:用于把一组.class文件打包成一个.jar文件,便于发布;
javadoc:用于从Java源码中自动提取注释并生成文档;
jdb:Java调试器,用于开发阶段的运行调试。
Hello world
安装好JDK之后,开始编写第一个小程序。
打开文本编辑器,输入以下代码:
public class Hello {public static void main(String[] args) {System.out.println("Hello, world!");}
}
代码的语法先不做解释,之后学习的时候会知道的。
写好代码后,保存为Hello.java。
打开命令提示符,切换到Hello.java的目录。执行命令
javac Hello.java
如果源代码无误,上述命令不会有任何输出,而当前目录下会产生一个Hello.class文件。然后执行命令:
java Hello
屏幕上会输出:
Hello, world!
Eclipse
当然不能一直使用JDK,集成开发环境(Integrated Development Environment)才是正道。Java的集成开发环境主要有Eclipse,IntelliJ Idea,NetBeans,我是用的是Eclipse。
安装过程比较简单,这里放上下载地址:
https://www.eclipse.org/downloads/packages/
需要注意的是安装时有一步要选择版本,选择版本是Eclipse IDE for Java Developers。
安装好之后有一些设置:
选择菜单“Window”-“Preferences”,打开配置对话框:
调整以下设置项:
General > Editors > Text Editors
钩上“Show line numbers”,这样编辑器会显示行号;
General > Workspace
钩上“Refresh using native hooks or polling”,这样Eclipse会自动刷新文件夹的改动;
对于“Text file encoding”,如果Default不是UTF-8,一定要改为“Other:UTF-8”,所有文本文件均使用UTF-8编码;
对于“New text file line delimiter”,建议使用Unix,即换行符使用\n而不是Windows的\r\n。
Java > Compiler
将“Compiler compliance level”设置为11,本教程的所有代码均使用Java 12的语法,并且编译到Java 11的版本。
Java > Installed JREs
在Installed JREs中应该看到Java SE 12,如果还有其他的JRE,可以删除,以确保Java SE 12是默认的JRE。
使用Eclipse
设置好之后,就可以使用Eclipse编写第一个project了。
在Eclipse菜单选择“File”-“New”-“Java Project”,填入HelloWorld,JRE选择Java SE 12。
然后点击NEXT,暂时不要勾选“Create module-info.java file”,因为模块化机制还没学到。
点击“Finish”就成功创建了一个名为HelloWorld的Java project。
展开HelloWorld工程,选中源码目录src,点击右键,在弹出菜单中选择“New”-“Class”;
在弹出的对话框中,Name一栏填入Hello;
点击”Finish“,就自动在src目录下创建了一个名为Hello.java的源文件。我们双击打开这个源文件,填上代码:
public class Hello {public static void main(String[] args) {System.out.println("Hello world!");}
}
保存,然后选中文件Hello.java,点击右键,在弹出的菜单中选中“Run As…”-“Java Application”。
在Console窗口中就可以看到运行结果,如下:
Hello world!
Xmind
最后,放上这一节的思维导图:
参考资料
解释型语言和编译型语言的区别
Java简介 – 廖雪峰的官方网站
PS: 如果觉得本篇本章对您有所帮助,欢迎关注、评论、赞!
Java学习笔记(一):Java简介相关推荐
- Java学习笔记1:Java中有关print、println、printf的用法和区别
Java学习笔记1:Java中有关print.println.printf的用法和区别 最近在学习java,写一些笔记记录下. 1.print()函数是一般的标准输出,但是不换行. 2.println ...
- Java学习笔记(java基础)
Java学习笔记(第一周) Java 介绍 Java 发展方向 JVM , JDK , JRE 名词解释 Java语言的特点 Java安装 安装包的下载 配置环境变量 验证是否安装成功 Java的第一 ...
- 【java】java学习笔记之java oop(面向对象)
如下图所示为笔者总结的java oop(面向对象)学习笔记,其中,附带有代码示例(未展开),方便理解记忆.需要源文件的请到我的资源中下载,下载地址:https://download.csdn.net/ ...
- 【java】java学习笔记之java常用类
如下图所示为笔者总结的java常用类学习笔记,其中,附带有代码示例(未展开),方便理解记忆.需要源文件的请到我的资源中下载,下载地址:https://download.csdn.net/downloa ...
- Java 学习笔记(4)——java 常见类
上次提前说了java中的面向对象,主要是为了使用这些常见类做打算,毕竟Java中一切都是对象,要使用一些系统提供的功能必须得通过类对象调用方法.其实Java相比于C来说强大的另一个原因是Java中提供 ...
- java学习笔记(一) ----java下常用的包功能
***java下常用的包*** java.lang----包含一些java语言的核心类,如String,Math,Integer,System,Thread,提供常用的功能. java.awt---- ...
- Java学习笔记-7.Java IO流
一.输入/输出流 1.流:不同类型的输入.输出源 数据流:输入或输出的数据 Java数据流的所有接口和类都是在java.io包中定义的,因此应在程序开头加入 import java.io.* 2 ...
- JAVA学习笔记 03 - JAVA语言程序结构
本文是Java基础课程的第三课.计算机语言的程序结构无外乎顺序结构.分支结构.循环结构,本文主要介绍Java语言中这些程序结构是如何实现的 文章目录 一.程序结构 二.分支结构 1.单分支if语句 2 ...
- Java学习笔记01—Java概述、数据类型、变量、标识符、类型转换
1. Java概述 1.1 Java语言发展史(了解) 语言:人与人交流沟通的表达方式 计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言 Java语言是美国Sun公司(Stanford Uni ...
- Java学习笔记:办公自动化简介及PDF文件分析
啥叫办公自动化 非IT专业人员打交道最多的三种文件: Word.Excel.PDF. 办公自动化就是把手工的操作通过编程自动化完成. 这个阶段讲: Word.Excel.PDF文件的读写,图表,简化日 ...
最新文章
- 源码安装httpd2.4.4
- App小样在手机运行了一下
- HighNewTech:2019.08.09程序猿界大事件之【你好,我是鸿蒙OS】~【来了,老弟】—技术才是硬道理,开源方能建立新生态!
- JavaScript | 数据属性与访问器属性
- c语言指针对齐,告诉C指针数据是16字节对齐
- spring源码之bean加载(bean解析下篇)
- Diffusion Model扩散模型原理
- 基于万维易源提供的API接口实现快递单号查询物流信息
- qq邮箱 服务器认证失败怎么回事,为什么我的QQ邮箱登录不了 QQ邮箱无法登陆怎么解决...
- 增强游戏打击感可从游戏音效增强
- Windows下WordPress安装教程(全)
- 征途服务器文件,如何使用云服务器架设征途
- python requests 爬取代理ip并验证(快代理西祠代理)
- 苹果5越狱教程_苹果新越狱工具发布,支持iOS 13最新版,详细安装教程看这里...
- 微信小程序之根据经纬度反查地址
- Resources的使用方式
- python笔记-Pygame详解(十七):joystick 模块
- OEM版Win7激活原理
- 数商云:以数字化全面促进传统产业升级,纺织行业最大限度实现精益管理
- 编程、创业、开源感悟——SDCC 2013讲师云风专访
热门文章
- mysql5.6 rpm安装配置
- 安卓输入法 车机版_百度输入法车载版-百度输入法车机版v8.2.1.18 安卓版-腾牛安卓网...
- 下载国外软件慢(例如:Python安装包)
- SQL server 2008不允许保存更改的解决办法
- 如何调教ChatGPT成为你的策略助手
- C语言实验06_数学
- 如何开启tiktok之旅
- Matlab:图像轮廓的曲率计算
- 修改conda环境和缓存默认路径/修改Python 的 pip install 默认安装依赖路径
- 利用Java SE基本知识是开发【学生信息管理系统】中