Java学习笔记(一):Java简介

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://mp.csdn.net/mdeditor/100565954

绪言

最近开始学习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: 如果觉得本篇本章对您有所帮助,欢迎关注、评论、赞!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值