大数据开发基础入门与项目实战(一)Java SE之1.初识计算机和Java语言(下)

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 本文的主题是初识计算机和Java语言,主要包括计算机的体系结构(计算机的基本概念、常见的主要硬件和软件、计算机的体系结构)、Java语言概述(计算机语言的发展、Java语言的发展和Java语言的主要版本)和开发环境的搭建(开发环境的搭建和安装、编写Java程序的流程、环境变量的配置和跨平台原理)等。

(2)安装目录和概念解读

Java安装路径主要包含的目录如下:

E:.
├─bin
│  └─server
├─conf
│  ├─management
│  └─security
│      └─policy
│          ├─limited
│          └─unlimited
├─include
│  └─win32
│      └─bridge
├─jmods
├─jre
│  ├─bin
│  │  └─server
│  ├─conf
│  │  └─security
│  │      └─policy
│  │          ├─limited
│  │          └─unlimited
│  ├─include
│  │  └─win32
│  ├─legal
│  │  ├─java.base
│  │  ├─java.datatransfer
│  │  ├─java.desktop
│  │  ├─java.prefs
│  │  └─java.xml
│  └─lib
│      ├─security
│      └─server
├─legal
│  ├─java.base
│  ├─java.compiler
│  ├─java.datatransfer
│  ├─java.desktop
│  ├─java.instrument
│  ├─java.logging
│  ├─java.management
│  ├─java.management.rmi
│  ├─java.naming
│  ├─java.net.http
│  ├─java.prefs
│  ├─java.rmi
│  ├─java.scripting
│  ├─java.se
│  ├─java.security.jgss
│  ├─java.security.sasl
│  ├─java.smartcardio
│  ├─java.sql
│  ├─java.sql.rowset
│  ├─java.transaction.xa
│  ├─java.xml
│  ├─java.xml.crypto
│  ├─jdk.accessibility
│  ├─jdk.aot
│  ├─jdk.attach
│  ├─jdk.charsets
│  ├─jdk.compiler
│  ├─jdk.crypto.cryptoki
│  ├─jdk.crypto.ec
│  ├─jdk.crypto.mscapi
│  ├─jdk.dynalink
│  ├─jdk.editpad
│  ├─jdk.hotspot.agent
│  ├─jdk.httpserver
│  ├─jdk.internal.ed
│  ├─jdk.internal.jvmstat
│  ├─jdk.internal.le
│  ├─jdk.internal.opt
│  ├─jdk.internal.vm.ci
│  ├─jdk.internal.vm.compiler
│  ├─jdk.internal.vm.compiler.management
│  ├─jdk.jartool
│  ├─jdk.javadoc
│  ├─jdk.jcmd
│  ├─jdk.jconsole
│  ├─jdk.jdeps
│  ├─jdk.jdi
│  ├─jdk.jdwp.agent
│  ├─jdk.jfr
│  ├─jdk.jlink
│  ├─jdk.jshell
│  ├─jdk.jsobject
│  ├─jdk.jstatd
│  ├─jdk.localedata
│  ├─jdk.management
│  ├─jdk.management.agent
│  ├─jdk.management.jfr
│  ├─jdk.naming.dns
│  ├─jdk.naming.rmi
│  ├─jdk.net
│  ├─jdk.pack
│  ├─jdk.rmic
│  ├─jdk.scripting.nashorn
│  ├─jdk.scripting.nashorn.shell
│  ├─jdk.sctp
│  ├─jdk.security.auth
│  ├─jdk.security.jgss
│  ├─jdk.unsupported
│  ├─jdk.unsupported.desktop
│  ├─jdk.xml.dom
│  └─jdk.zipfs
└─lib
    ├─jfr
    ├─security
    └─server

bin目录

   可执行文件,包括javac.exe、java.exe等。

   需要将bin目录添加到bin目录下。

conf目录

   配置文件

include目录

   .h头文件

jmods

   模块信息

legal

   授权文件

lib

   库,src.zip包含很多子目录。

 

一些基本概念:

JDK,即Java开发工具包 ( Java Development Kit),Java开发人士需要下载和安装JDK,目前的主流版本为JDK11。

JRE是Java SE运行时环境 (Java SE Runtime Environment),提供了运行Java应用程序所必须的软件环境等。无论是开发还是运行Java应用都必须安装。

前面的bin目录下有两个可执行文件:

javac.exe

   编译器,主要用于将高级Java源代码翻译成字节码文件。

java.exe

   解释器,主要用于启动JVM对字节码文件进行解释并执行。

其中,JDK、JRE、JVM之间的关系如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-azNf2l5g-1629031393221)(image/image.png)]

可以看到三者之间是相互包含的关系。

(3)编写Java程序的流程

开始阶段使用TE编写,来掌握基本的语法和编码技巧,同时熟悉指法。

代码如下:

/*
 * 项目名称:第一个Java程序
 * 项目功能:打印hello world
 * 作    者:Corley
 * 版    本:V1.0
 * 所 有 者:XXX
 * 备    注:TEST
 */
 public class HelloWorld /*类名*/ { /*类体*/
  public static void main /*主方法名*/ (String[] args) { /*主方法体*/
    System.out.println("Hello World!");
  }
 }

执行javac HelloWorld.java ,生成字节码文件HelloWorld.class,该文件直接打开会显示乱码;

执行java HelloWorld ,进行解释执行,打印如下:

Hello World!

执行流程示意如下:

(4)常见的错误和简化的编译执行

常见的错误:

需要class, interface或enum

   入口关键字拼写出现错误,例如class 写成clas

找不到符号

   字母大小写、拼写错误,例如类型String写成string

需要’;’

   一行结束时未加分号,需要注意使用英文的分号;

非法字符: ‘\uxxxx’

   使用了中文符号。例如使用了中文的分号,就会报错非法字符: '\uff1b'

mian

   在类 中找不到 main 方法, 请将 main 方法定义为:

Java11新特性-简化的编译运行 :

在Java11中可以将编译运行的两步直接省为1步,即java HelloWorld.java ,此时就会自动先编译、再解释执行。

需要保证当前目录下不含有字节码文件,否则会报错。

(5)常用的快捷键和注释

Windows下常用的快捷键如下:

image.png

注释是用于进行代码说明的,即给程序员看的文字描述,编译器会忽略。

分类:

单行注释

   以// 开始,到本行结束,都是注释。

多行注释

   从/*开始,到*/结束,中间所有行都是注释。

   多行注释不允许嵌套。

多行/文档注释

   从/**开始,到*/结束,是一种支持提取的注释。

(6)环境变量的配置

前面可以直接执行javac xxx.java 、java xxx 等可以直接执行,是因为将JDK的安装目录下的bin目录添加到了环境变量,如果不添加环境变量则会报错'abc' 不是内部或外部命令,也不是可运行的程序或批处理文件。 。

为了将可以执行文件可以在任意路径中均可以使用,需要将该文件所在的路径信息添加到环境变量中,例如E:\Java\jdk-11.0.2\bin,Windows 10添加示意如下:

2345_image_file_copy_74.jpg

说明:

如果同时添加了多个JDK的bin路径,则会从前到后遍历配置的环境变量、使用找到的第一个路径对应的JDK。

配置环境变量后需要重启DOS窗口 ,才能生效。

考虑到可能需要更新JDK,则可以配置JAVA_HOME系统变量,再修改Path的路径,有2个好处:

   - 如果以后需要更新JDK版本,只需要修改JAVA_HOME变量即可;

   - Java EE也会用到JAVA_HOME变量,为后面的使用做准备。

(7)跨平台原理

Java相对于C、C++的一个重要特点是支持跨平台 ,也就是相同的字节码文件可以在不同的平台上执行,其中起重要作用的就是JVM:JVM将Java字节码翻译为某个具体平台能够执行的机器指令,由于Sun定义了JVM规范,而且不同的操作系统大多提供了JVM实现,才使得相同的一个字节码文件可以在不同的系统上运行,从而实现了“一次编译、到处使用”的效果。

如下图所示:

2345_image_file_copy_76.jpg

总结

大数据开发的基础是Java,因此必须要先掌握计算机的基础原理和基本的Java开发功底,为大数据开发打牢基础。

同时,本文只是知识文档的部分内容,如果要获取更完整的文档,可以私信交流。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
9天前
|
分布式计算 Java MaxCompute
ODPS MR节点跑graph连通分量计算代码报错java heap space如何解决
任务启动命令:jar -resources odps-graph-connect-family-2.0-SNAPSHOT.jar -classpath ./odps-graph-connect-family-2.0-SNAPSHOT.jar ConnectFamily 若是设置参数该如何设置
|
1月前
|
缓存 NoSQL Java
大数据-50 Redis 分布式锁 乐观锁 Watch SETNX Lua Redisson分布式锁 Java实现分布式锁
大数据-50 Redis 分布式锁 乐观锁 Watch SETNX Lua Redisson分布式锁 Java实现分布式锁
55 3
大数据-50 Redis 分布式锁 乐观锁 Watch SETNX Lua Redisson分布式锁 Java实现分布式锁
|
1月前
|
分布式计算 大数据 Java
大数据-86 Spark 集群 WordCount 用 Scala & Java 调用Spark 编译并打包上传运行 梦开始的地方
大数据-86 Spark 集群 WordCount 用 Scala & Java 调用Spark 编译并打包上传运行 梦开始的地方
19 1
大数据-86 Spark 集群 WordCount 用 Scala & Java 调用Spark 编译并打包上传运行 梦开始的地方
|
1月前
|
消息中间件 分布式计算 Java
大数据-73 Kafka 高级特性 稳定性-事务 相关配置 事务操作Java 幂等性 仅一次发送
大数据-73 Kafka 高级特性 稳定性-事务 相关配置 事务操作Java 幂等性 仅一次发送
27 2
|
1月前
|
消息中间件 存储 Java
大数据-58 Kafka 高级特性 消息发送02-自定义序列化器、自定义分区器 Java代码实现
大数据-58 Kafka 高级特性 消息发送02-自定义序列化器、自定义分区器 Java代码实现
41 3
|
1月前
|
分布式计算 Java 大数据
大数据-147 Apache Kudu 常用 Java API 增删改查
大数据-147 Apache Kudu 常用 Java API 增删改查
25 1
|
1月前
|
消息中间件 Java 大数据
大数据-56 Kafka SpringBoot与Kafka 基础简单配置和使用 Java代码 POM文件
大数据-56 Kafka SpringBoot与Kafka 基础简单配置和使用 Java代码 POM文件
62 2
|
1月前
|
分布式计算 Java 大数据
大数据-122 - Flink Time Watermark Java代码测试实现Tumbling Window
大数据-122 - Flink Time Watermark Java代码测试实现Tumbling Window
30 0
|
11天前
|
安全 Java
java 中 i++ 到底是否线程安全?
本文通过实例探讨了 `i++` 在多线程环境下的线程安全性问题。首先,使用 100 个线程分别执行 10000 次 `i++` 操作,发现最终结果小于预期的 1000000,证明 `i++` 是线程不安全的。接着,介绍了两种解决方法:使用 `synchronized` 关键字加锁和使用 `AtomicInteger` 类。其中,`AtomicInteger` 通过 `CAS` 操作实现了高效的线程安全。最后,通过分析字节码和源码,解释了 `i++` 为何线程不安全以及 `AtomicInteger` 如何保证线程安全。
java 中 i++ 到底是否线程安全?
|
1天前
|
存储 安全 Java
Java多线程编程的艺术:从基础到实践####
本文深入探讨了Java多线程编程的核心概念、应用场景及其实现方式,旨在帮助开发者理解并掌握多线程编程的基本技能。文章首先概述了多线程的重要性和常见挑战,随后详细介绍了Java中创建和管理线程的两种主要方式:继承Thread类与实现Runnable接口。通过实例代码,本文展示了如何正确启动、运行及同步线程,以及如何处理线程间的通信与协作问题。最后,文章总结了多线程编程的最佳实践,为读者在实际项目中应用多线程技术提供了宝贵的参考。 ####
下一篇
无影云桌面