《Java 核心技术卷1 基础知识》第二章 Java 程序设计环境 笔记

简介: 《Java 核心技术卷1 基础知识》第二章 Java 程序设计环境 笔记

2.1 安装 Java 开发工具包

2.1.1 下载 JDK

下载 Java 开发工具包,可以访问 Oralce 公司的网站:Java Downloads | Oracle

表2-1 Java 术语

术语名

缩写

解释

Java Development Kit(Java 开发工具包)

JDK

编写 Java 程序的程序员使用的软件

Java Runtime Environment(Java 运行时环境)

JRE

运行 Java 程序的用户使用的软件

Server JRE(服务器 JRE)

在服务器上运行 Java 程序的软件

Standard Edition(标准版)

SE

用于桌面或简单服务器应用的 Java 平台

Enterprise Edition(企业版)

EE

用于复杂服务器应用的 Java 平台

Micro Edition(微型版)

ME

用于小型设备的 Java 平台

Java FX

用于图形化用户界面的一个备选工具包,在 Java 11 之前的某些 Java SE 发布版本中提供

OpenJDK

Java SE 的一个免费开源实现

Java 2

J2

一个过时的术语,用于描述 1998 ~ 2006 年之间的 Java 版本

Software Development Kit(软件开发工具包)

SDK

一个过时的术语,用于描述 1998 ~ 2006 年之间的 JDKa

Update

u

Oracle 公司的术语,表示 Java 8 之前的 bug 修正版本

NetBeans

Oracle 公司的集成开发环境

对于 Linux,还可以在 RPM 文件和 .tar.gz 文件之间做出选择。我们建议使用后者,这样可以在你希望的任何位置直接解压这个压缩包。

  • 你需要的是 JDK,而不是 JRE
  • 对于 Linux,选择 .tar.gz 版本

2.1.2 设置 JDK

安装这个开发工具包并明确要在哪里安装

在 Windows 上,默认位置,如 c:\Programe Files\Java\jdk-11.0.x

在 Mac 上,会把软件安装到 /Library/Java/JavaVirtualMachines/jdk-11.0.x.jdk/Contents/Home

在 Linux 上,只需要把 .tar.gz 文件解压缩到你选择的某个位置

在 Windows 或 Linux 上安装 JDK 时,还需要另外完成一个步骤:将 jdk/bin 目录添加到可执行路径中 —— 可执行路径是操作系统查找可执行文件时所遍历的目录列表


在 Linux 中,需要在 ~/.bashrc 或 ~/.bash_profile 文件的最后增加这样一行

export PATH=jdk/bin:$PATH


测试是否设置是否正确:打开一个终端窗口,键入


javac --version


然后按回车键。应该能看到显示以下信息


javac 9.0.4


2.1.3 安装库源文件和文档

类库源文件在 JDK 中以压缩文件 lib/src.zip 的形式发布


编译器、虚拟机、原生方法以及私有辅助类,访问 http://openjdk.java.net


文档包含在一个压缩文件中,它是一个独立于 JDK 的压缩文件,从网站 Java Downloads | Oracle 下载这个文档


本书的程序示例,可以从 http://horstmann.com/corejava 下载


2.2 使用命令行工具

javac Welcome.java


java Welcome


javac 程序是一个 Java 编译器,它将文件 Welcome.java 编译成 Welcome.class


java 程序启动 Java 虚拟机,虚拟机执行编译器编译到类文件中的字节码


如果手工输入源程序,一定要注意正确地输入大小写

编译器需要一个文件名,而运行程序时,只需要指定类名

Java 区分大小写

2.3 使用集成开发环境

可以免费得到一些很棒的开发环境,如 Eclipse、IntelliJ IDEA 和 NetBeans


2.4 JShell

JShell 程序提供了一个“读取 - 计算 - 打印循环”(Read - Evaluate - Print Loop,REPL)


键入一个 Java 表达式;JShell 会评估你的输入,打印结果,等待你的下一个输入


要启动 JShell,只需要在终端窗口中键入 jshell

% jshell
|  欢迎使用 JShell -- 版本 13.0.2
|  要大致了解该版本, 请键入: /help intro
jshell> "Core Java".length()
$1 ==> 9
jshell> 5 * $1 - 3
$2 ==> 42
jshell> int answer = 6 * 7
answer ==> 42
jshell> Math.
E                 IEEEremainder(    PI                abs(              
acos(             addExact(         asin(             atan(             
atan2(            cbrt(             ceil(             class             
copySign(         cos(              cosh(             decrementExact(   
exp(              expm1(            floor(            floorDiv(         
floorMod(         fma(              getExponent(      hypot(            
incrementExact(   log(              log10(            log1p(            
max(              min(              multiplyExact(    multiplyFull(     
multiplyHigh(     negateExact(      nextAfter(        nextDown(         
nextUp(           pow(              random()          rint(             
round(            scalb(            signum(           sin(              
sinh(             sqrt(             subtractExact(    tan(              
tanh(             toDegrees(        toIntExact(       toRadians(        
ulp(              
jshell> Math.l
log(     log10(   log1p(   
jshell> Math.log10(0.001)
$4 ==> -3.0
jshell> Math.log10(1000)
$5 ==> 3.0
jshell> /exit
|  再见
相关文章
|
5天前
|
设计模式 安全 Java
Java面试题:设计模式如单例模式、工厂模式、观察者模式等在多线程环境下线程安全问题,Java内存模型定义了线程如何与内存交互,包括原子性、可见性、有序性,并发框架提供了更高层次的并发任务处理能力
Java面试题:设计模式如单例模式、工厂模式、观察者模式等在多线程环境下线程安全问题,Java内存模型定义了线程如何与内存交互,包括原子性、可见性、有序性,并发框架提供了更高层次的并发任务处理能力
17 1
|
15天前
|
存储 NoSQL Java
探索Java分布式锁:在高并发环境下的同步访问实现与优化
【6月更文挑战第30天】Java分布式锁在高并发下确保数据一致性,通过Redis的SETNX、ZooKeeper的临时节点、数据库操作等方式实现。优化策略包括锁超时重试、续期、公平性及性能提升,关键在于平衡同步与效率,适应大规模分布式系统的需求。
29 1
|
18天前
|
安全 Java 编译器
杭州 【Java基础知识 11】java泛型方法的定义和使用(学习+改进+自己理解,想法) (借鉴-侵-删)
杭州 【Java基础知识 11】java泛型方法的定义和使用(学习+改进+自己理解,想法) (借鉴-侵-删)
15 1
|
21天前
|
Java
Java中的`synchronized`关键字是一个用于并发控制的关键字,它提供了一种简单的加锁机制来确保多线程环境下的数据一致性。
【6月更文挑战第24天】Java的`synchronized`关键字确保多线程数据一致性,通过锁定代码块或方法防止并发冲突。同步方法整个方法体为临界区,同步代码块则锁定特定对象。示例展示了如何在`Counter`类中使用`synchronized`保证原子操作和可见性,同时指出过度使用可能影响性能。
23 4
|
5天前
|
设计模式 安全 Java
Java面试题:如何实现一个线程安全的单例模式,并确保其在高并发环境下的内存管理效率?如何使用CyclicBarrier来实现一个多阶段的数据处理任务,确保所有阶段的数据一致性?
Java面试题:如何实现一个线程安全的单例模式,并确保其在高并发环境下的内存管理效率?如何使用CyclicBarrier来实现一个多阶段的数据处理任务,确保所有阶段的数据一致性?
9 0
|
5天前
|
设计模式 并行计算 安全
Java面试题:如何使用设计模式优化多线程环境下的资源管理?Java内存模型与并发工具类的协同工作,描述ForkJoinPool的工作机制,并解释其在并行计算中的优势。如何根据任务特性调整线程池参数
Java面试题:如何使用设计模式优化多线程环境下的资源管理?Java内存模型与并发工具类的协同工作,描述ForkJoinPool的工作机制,并解释其在并行计算中的优势。如何根据任务特性调整线程池参数
10 0
|
5天前
|
存储 安全 Java
Java面试题:假设你正在开发一个Java后端服务,该服务需要处理高并发的用户请求,并且对内存使用效率有严格的要求,在多线程环境下,如何确保共享资源的线程安全?
Java面试题:假设你正在开发一个Java后端服务,该服务需要处理高并发的用户请求,并且对内存使用效率有严格的要求,在多线程环境下,如何确保共享资源的线程安全?
11 0
|
5天前
|
存储 安全 Java
Java面试题:请解释Java内存模型,并说明如何在多线程环境下使用synchronized关键字实现同步,阐述ConcurrentHashMap与HashMap的区别,以及它如何在并发环境中提高性能
Java面试题:请解释Java内存模型,并说明如何在多线程环境下使用synchronized关键字实现同步,阐述ConcurrentHashMap与HashMap的区别,以及它如何在并发环境中提高性能
9 0
|
5天前
|
存储 安全 Java
Java面试题:如何在Java应用中实现有效的内存优化?在多线程环境下,如何确保数据的线程安全?如何设计并实现一个基于ExecutorService的任务处理流程?
Java面试题:如何在Java应用中实现有效的内存优化?在多线程环境下,如何确保数据的线程安全?如何设计并实现一个基于ExecutorService的任务处理流程?
10 0
|
5天前
|
安全 Java 调度
Java面试题:Java内存优化、多线程安全与并发框架实战,如何在Java应用中实现内存优化?在多线程环境下,如何保证数据的线程安全?使用Java并发工具包中的哪些工具可以帮助解决并发问题?
Java面试题:Java内存优化、多线程安全与并发框架实战,如何在Java应用中实现内存优化?在多线程环境下,如何保证数据的线程安全?使用Java并发工具包中的哪些工具可以帮助解决并发问题?
7 0