阳江网站制作公司/百度广告官网
文章目录
- 1.2 Java 的特点
- 1.2.1 简单
- 1.2.2 面向对象
- 1.2.3 与平台无关
- ① 平台与机器指令
- ② C/C++程序依赖平台
- ③ Java 虚拟机与字节码
- 1.2.4 多线程
- 1.2.5 动态
- 1.30安装 JDK
- 1.3.1 平台简介
- 0 Java SE
- ②Java EE
- 1.4 Java 程序的开发步骤
- ②保存源文件
- 1.5.2 编译
- 1.8 Java之父-James Gosling
- 1.9 小结
1.2 Java 的特点
Java是目前使用最为广泛的网络编程语言之一,它具有语法简单、面向对象、稳定、与平台无关、多线程、动态等特点,与平台无关是Java最初风靡世界的最重要的原因。
1.2.1 简单
如果读者学习过C++语言,会感觉Java很眼熟,因为Java中许多基本语句的语法和C++语言是一样的,像常用的循环语句、控制语句等几乎和C++相同。需要注意的是,Java和C++是完全不同的语言,Java和C++各有各的优势,将会长期并存下去,Java语言和C++语言已经成为软件开发者应当掌握的基础语言。如果从语言的简单性方面看,Java要比C++简单,C++中许多容易混淆的概念或者被Java弃之不用了,或者以一种更清楚、更容易理解的方式实现,例如Java中不再有指针的概念。
1.2.2 面向对象
基于对象的编程更符合人的思维模式,使人们更容易解决复杂的问题。Java是面向对象的编程语言,本书将在第4~7章详细、准确地介绍类与对象、子类与继承、接口与实现以及内部类与异常类等重要概念。
1.2.3 与平台无关
Java语言的出现源自对独立于平台的语言的需要,希望用这种语言能编写出可嵌入各种家用电器等设备的芯片上且易于维护的程序。但是,人们发现当时的编程语言(例如C、C++)有一个共同的缺点,那就是只能对特定的中央处理器(Central Processing Unit,CPU)芯片进行编译。这样,一旦电器设备更换了芯片就不能保证程序的正常运行,就可能需要修改程序并针对新的芯片重新进行编译。
Java语言和其他语言相比,最大的优势就是编写的软件能在执行码上兼容,在所有的计算机上运行。Java之所以能做到这一点,是因为Java可以在计算机的操作系统之上再提供一个Java运行环境(Java Runtime Environment JRE).该运行环境由Java虚拟机(JavaVirtual Machine,JVM)、类库以及一些核心文件组成,也就是说,只要平台提供了Java 运行环境,用Java 编写的软件就能在其上运行
① 平台与机器指令
无论用哪种编程语言编写的应用程序,都需要经过操作系统和处理器来完成程序的运行,因此这里所指的平台由操作系统(Operating System,OS)和中央处理器(CPU)所构成。与平台无关是指软件的运行不因操作系统、中央处理器的变化而无法运行或出现运行错误。
每个平台都会形成自己独特的机器指令。所谓平台的机器指令,就是可以被该平台直接识别、执行的一种由0.1组成的序列代码。相同的CPU和不同的操作系统所形成的平台的机器指令可能是不同的。例如,某种平台可能用8位序列代码00001111表示加法指令,用10000001表示减法指令;而另一种平台可能用8位序列代码10101010表示加法指令,用10010011表示减法指令。
② C/C++程序依赖平台
现在分析一下为何用C/C++语言编写的程序可能因为操作系统的变化、中央处理器升级导致程序出现错误或无法运行。
C/C++针对当前C/C++源程序所在的特定平台对其源文件进行编译、连接,生成机器指令,即根据当前平台的机器指令生成可执行文件,那么可以在任何与当前平台相同的平台上运行这个可执行文件。但是,不能保证C/C++源程序所产生的可执行文件在所有的平台上都能正确地被运行,其原因是不同平台可能具有不同的机器指令(如图 1.2 所示)。因此,如果更换平台,可能需要修改源程序,并针对新的平台重新编译源程序。
③ Java 虚拟机与字节码
Java语言和其他语言相比,最大的优势就是它与平台的无关性。这是因为Java可以在平台之上再提供一个Java 运行环境,该Java 运行环境由Java虚拟机、类库以及一些核心文件组成。Java虚拟机的核心是所谓的字节码指令,即可以被Java虚拟机直接识别、执行的一种由0.1组成的序列代码,字节码并不是机器指令,因为它不和特定的平台相关,不能被任何平台直接识别、执行。Java针对不同平台提供的Java虚拟机的字节码指令都是相同的,例如所有的虚拟机都将11110000识别、执行为加法操作。
和C/C++不同的是,Java语言提供的编译器不针对特定的操作系统和CPU芯片进行编译,而是针对Java虚拟机把Java源程序编译成称为字节码的“中间代码”,例如Java源文件中的+被编译成字节码指令 11110000。字节码是可以被Java虚拟机识别、执行的代码,即Java虚拟机负责解释、运行字节码,其运行原理是Java虚拟机负责将字节码翻译成虚拟机所在平台的机器码,并让当前平台运行该机器码,如图1.3所示。
在一个计算机上编译得到的字节码文件可以复制到任何一个安装了Java运行环境的计算机上直接使用。字节码由Java虚拟机负责解释、运行,即Java虚拟机负责将字节码翻译成本地计算机的机器码,并将机器码交给本地的操作系统运行
1.2.4 多线程
Java 的特点之一就是内置了对多线程的支持。多线程允许同时完成多个任务。实际上多线程使人产生多个任务在同时执行的错觉,因为目前计算机的处理器在同一时刻只能执行一个线程,但处理器可以在不同的线程之间快速地切换,由于处理器的运行速度非常快,远远超过了人接收信息的速度,所以给人的感觉好像多个任务在同时执行。C++没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序的设计。
1.2.5 动态
在学习了第4章之后,读者就会知道Java程序的基本组成单元就是类,有些类是用户自己编写的,有些是从类库中引入的,而类又是在运行时动态装载的,这就使得Java可以在分布式环境中动态地维护程序及类库。C/C++在编译时就将函数库或类库中被使用的函数、类同时生成机器码,那么每当其类库升级之后,如果C/C++程序想具有新类库提供的功能,程序就必须重新修改、编译。
1.30安装 JDK
Java要实现“编写一次,到处运行(write once,run anywhere)”的目标,就必须提供相应的Java运行环境,即运行Java程序的平台。
1.3.1 平台简介
0 Java SE
Java SE(曾称为J2SE)称为Java标准版或Java标准平台。Java SE提供了标准的JavaDevelopment Kit(JDK)。利用该平台可以开发Java 桌面应用程序和低端的服务器应用程序。当前较新的JDK版本为JDK 14。
②Java EE
Java EE(曾称为J2EE)称为Java企业版或Java企业平台。使用Java EE可以构建企业级的服务应用,Java EE平台包含了Java SE平台,并增加了附加类库,以便支持目录管理、交易管理和企业级消息处理等功能。
1.4 Java 程序的开发步骤
①编写源文件
使用一个文本编辑器,例如记事本(可以在Windows附件中找到记事本notepad)来编写源文件。注意,不可使用非文本编辑器,例如Word编辑器。另外,要将编写好的源文件保存起来,源文件的扩展名必须是.java。
②编译源文件
使用Java 编译器(javac.exe)编译源文件,得到字节码文件。
③运行程序
使用Java SE平台中的Java解释器(java.exe)来解释、执行字节码文件。
②保存源文件
如果源文件中有多个类,那么最多有一个类是 public类;如果有一个类是public类,那么源文件的名字必须与这个类的名字完全相同,扩展名是,java;如果源文件没有public类,那么源文件的名字只要和某个类的名字相同,并且扩展名是.java就可以了。
1.5.2 编译
在保存了Hello,java 源文件之后,就可以使用Java 编译器(javac.exe)对其进行编译。
使用JDK环境开发Java程序需打开MS-DOS命令行窗口(在Windows系统中称命令提示符),可以单击计算机左下角的“开始”,在“Windows系统”下找到“命令提示符”选项,单击该选项打开MS-DOS命令行窗口;或右击计算机左下角的“开始”,找到“运行”选项,单击该选项,在弹出的对话框中输入“cmd”,打开MS-DOS命令行窗口。用户需要掌握几个简单的DOS操作命令:从逻辑分区C转到逻辑分区D,需在命令行中依次输入D和冒号并回车确认;进入某个子目录(文件夹)的命令是“cd目录名”;退出某个子目录的命令是“cd…”,例如从目录 example 退到目录 boy 的操作是“C:\boy>example> cd…”。
1.8 Java之父-James Gosling
1990年Sun公司成立了由James Gosling领导的开发小组,开始致力于开发一种可移植的、跨平台的语言,该语言能生成正确运行于各种操作系统及各种CPU芯片上的代码。他们的精心研究和努力促成了Java语言的诞生。1995 年5 月 Sun公司推出的Java DevelopmentKit 1. 0a2版本标志着Java的诞生。美国的著名杂志PC Magazine将Java语言评为1995年十大优秀科技产品之一。Java的快速发展得益于Internet和Web的出现,Internet上的各种不同计算机可能使用完全不同的操作系统和CPU芯片,但仍希望运行相同的程序,Java的出现标志着分布式系统的真正到来。
1.9 小结
(1)Java语言是面向对象编程语言,编写的软件与平台无关。Java语言涉及网络、多线程等重要的基础知识,特别适合于Internet应用的开发。很多新的技术领域都涉及了Java语言,学习和掌握Java已成为人们的共识。
(2) Java源文件由若干个书写形式互相独立的类组成。开发一个Java程序需经过3个步骤,即编写源文件、编译源文件生成字节码和加载运行字节码。
(3)编写代码务必遵守行业的习惯及风格。
相关文章:

第一章 JAVA入门
文章目录 1.2 Java 的特点1.2.1 简单1.2.2 面向对象1.2.3 与平台无关① 平台与机器指令② C/C程序依赖平台③ Java 虚拟机与字节码1.2.4 多线程1.2.5 动态1.30安装 JDK1.3.1 平台简介0 Java SE②Java EE1.4 Java 程序的开发步骤②保存源文件1.5.2 编译1.8 Java之父-James Gosli…...

二叉树详解(求二叉树的结点个数、深度、第k层的个数、遍历等)
二叉树,是一种特殊的树,特点是树的度小于等于2(树的度是整个树的结点的度的最大值),由于该特性,构建二叉树的结点只有三个成员,结点的值和指向结点左、右子树的指针。 typedef int DateType; t…...

Apollo配置中心及Python连接
本文将会介绍如何启动Apollo,在Apollo中配置参数,以及如何使用Python连接Apollo. Apollo介绍 在文章Python之读取配置文件和文章Python之配置文件处理中,笔者分别介绍了如何使用Python来处理ini, yaml, conf等配置文件。这种配置方式比较方便…...

LuatOS-SOC接口文档(air780E)--audio - 多媒体音频
常量 常量 类型 解释 audio.PCM number PCM格式,即原始ADC数据 audio.MORE_DATA number audio.on回调函数传入参数的值,表示底层播放完一段数据,可以传入更多数据 audio.DONE number audio.on回调函数传入参数的值,表示…...

Golang gorm manytomany 多对多 更新、删除、替换
Delete 移除 只删除中间表的数据 删除原有的 var a Article1db.Preload("Tag1s").Take(&a, 1)fmt.Printf("%v", a) {1 k8s [{1 cloud []} {2 linux []}]}mysql> select * from article1; ------------ | id | title | ------------ | 1 | k8s …...

FPGA-结合协议时序实现UART收发器(四):串口驱动模块uart_drive、例化uart_rx、uart_tx
FPGA-结合协议时序实现UART收发器(四):串口驱动模块uart_drive、例化uart_rx、uart_tx 串口驱动模块uart_drive、例化uart_rx、uart_tx,功能实现 文章目录 FPGA-结合协议时序实现UART收发器(四)࿱…...

Transformers-Bert家族系列算法汇总
🤗 Transformers 提供 API 和工具,可轻松下载和训练最先进的预训练模型。使用预训练模型可以降低计算成本、碳足迹,并节省从头开始训练模型所需的时间和资源。这些模型支持不同形式的常见任务,例如: 📝 自…...

Vulnhub系列靶机---HarryPotter-Fawkes-哈利波特系列靶机-3
文章目录 信息收集主机发现端口扫描dirsearch扫描gobuster扫描 漏洞利用缓冲区溢出edb-debugger工具msf-pattern工具 docker容器内提权tcpdump流量分析容器外- sudo漏洞提权 靶机文档:HarryPotter: Fawkes 下载地址:Download (Mirror) 难易程度ÿ…...

【服务器】ASUS ESC4000-E11 安装系统
ASUS ESC4000-E11说明书 没找到 ASUS ESC4000-E11的说明书,下面是ESC4000A-E11的说明书: https://manualzz.com/doc/65032674/asus-esc4000a-e11-servers-and-workstation-user-manual 下载地址: https://www.manualslib.com/manual/231379…...

创建java文件 自动添加作者、时间等信息 – IDEA 技巧
2023 09 亲测 文章目录 效果修改位置配置信息 效果 每次创建文件的时候,自动加上作者、时间等信息 修改位置 打开:File —> Settings —> Editor —> File and Code Templates —> includes —> FileHeader 配置信息 /*** author : Java…...

第27章_瑞萨MCU零基础入门系列教程之freeRTOS实验
本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写,需要的同学可以在这里获取: https://item.taobao.com/item.htm?id728461040949 配套资料获取:https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总: ht…...

Java学习之--类和对象
💕粗缯大布裹生涯,腹有诗书气自华💕 作者:Mylvzi 文章主要内容:Java学习之--类和对象 类和对象 类的实例化: 1.什么叫做类的实例化 利用类创建一个具体的对象就叫做类的实例化! 当我们创建了…...

Unity技术手册-UGUI零基础详细教程-Canvas详解
点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 👉关于作者 专注于Android/Unity和各种游…...

破天荒呀!小杜微信有名额了
写在前面 小杜粉,众所周知前面加小杜微信为好友的基本都是由名额限制的。一般都是付费进入社群且进行备注,小杜才会长期保留微信好友。主要由于,添加的人数太多了,微信账号人数名额有限。因此,小杜过一段时间…...

领域驱动设计:领域模型与代码模型的一致性
文章目录 领域对象的整理从领域模型到微服务的设计领域层的领域对象应用层的领域对象 领域对象与微服务代码对象的映射典型的领域模型非典型领域模型 DDD 强调先构建领域模型然后设计微服务,以保证领域模型和微服务的一体性,因此我们不能脱离领域模型来谈…...

TypeScript命名空间和模块
🎬 岸边的风:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 命名空间(Namespace) 命名空间(Namespace)使用场景 第三方库 兼容…...

C++学习笔记--函数重载(1)
文章目录 序言一、洞悉函数重载决议1.1、重载决议的基本流程1.2、Name Lookup1.2.1、Qualified Name Lookup1.2.1.1、Class Member Lookup1.2.1.2、Namespace Member Lookup 1.2.2、Unqualified Name Lookup1.2.2.1、Usual Unqualified Lookup1.2.2.2、Argument Dependant Look…...

交叉编译poco-1.9.2
目录 一、文件下载二、编译三、可能遇到的问题和解决方法3.1 error "Unknown Hardware Architecture."3.2 error Target architecture was not detected as supported by Double-Conversion一、文件下载 下载地址:poco-1.9.2 二、编译 解压目录后打开build/config/…...

C++中如何处理超长的数字(long long类型的整数都无法存储的)
C中如何处理超长的数字(long long类型的整数都无法存储的) 在 C中,如果数字超出了 long long 类型的范围,可以考虑使用字符串或第三方库(如 Boost.Multiprecision)来表示和处理超长数字。要使用第三方库需…...

RabbitMQ MQTT集群方案官方说明
RabbitMQ MQTT 官方网说明 官方地址: https://www.rabbitmq.com/mqtt.html 从3.8开始,该MQTT插件要求存在一定数量的群集节点。这意味着三分之二,五分之三,依此类推。 该插件也可以在单个节点上使用,但不支持两个节点的集群。 如…...

深圳唯创知音电子将参加IOTE 2023第二十届国际物联网展•深圳站
2023年9月20~22日,深圳唯创知音电子将在 深圳宝安国际会展中心(9号馆9B1)为您全面展示最新的芯片产品及应用方案,助力传感器行业的发展。 作为全球领先的芯片供应商之一,深圳唯创知音电子一直致力于为提供高质量、…...

《TCP/IP网络编程》阅读笔记--I/O复用
目录 1--基于I/O复用的服务器 2--select()函数 3--基于I/O复用的回声服务器端 4--send()和recv()函数的常用可选项 5--readv()和writev()函数 1--基于I/O复用的服务器 多进程服务器端具有以下缺点:当有多个客户端发起连接请求时,就会创建多个进程来…...

[C#] 允许当前应用程序通过防火墙
通常在一台装有防火墙的电脑上运行程序的场合,往往会弹出对话框提示:是否允许执行该应用程序。 我们在开发软件的时候,可以事先在软件里面设置当前软件为防火墙允许通过的软件。这样,用户在使用时就可以避开前面提到的弹框了。 在…...

帆软FineReport决策报表Tab实现方案
最近有个需求是要做首页展示,为了减少前端工作量,利用采购的帆软FineReport来实现,记录过程,方便备查。 需求 做个Tab页,实现多个页切换。 方案一、利用帆软自带切换 帆软自带的有Tab控件,可实现切换&a…...

只打印文名
CMakeLists.txt set(CMAKE_C_FLAGS "-O0 -ggdb -D__NOTDIR_FILE__$(notdir $<)") // set(CMAKE_C_FLAGS "-O0 -ggdb -D__NOTDIR_FILE__$(notdir $<) -D__FILENAME__$(subst $(dir $<),,$<)")C文件 #include <stdio.h>#ifdef __NOTDIR_…...

【经典小练习】JavaSE—拷贝文件夹
🎊专栏【Java小练习】 🍔喜欢的诗句:天行健,君子以自强不息。 🎆音乐分享【如愿】 🎄欢迎并且感谢大家指出小吉的问题🥰 文章目录 🎄效果🌺代码🛸讲解&#x…...

FPGA-结合协议时序实现UART收发器(六):仿真模块SIM_uart_drive_TB
FPGA-结合协议时序实现UART收发器(六):仿真模块SIM_uart_drive_TB 仿真模块SIM_uart_drive_TB,仿真实现。 vivado联合modelsim进行仿真。 文章目录 FPGA-结合协议时序实现UART收发器(六):仿真模…...

Spring Boot集成EasyExcel实现数据导出
在本文中,我们将探讨如何使用Spring Boot集成EasyExcel库来实现数据导出功能。我们将学习如何通过EasyExcel库生成Excel文件,并实现一些高级功能,如支持列下拉和自定义单元格样式,自适应列宽、行高,动态表头 ÿ…...

EasyExcel3.0读(日期、数字或者自定义格式转换)
EasyExcel 3.0读(日期、数字或者自定义格式转换) 依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.2.1</version> </dependency>对象 package com.xiaobu.entity.vo;import …...

浅谈C++|STL之vector篇
一.vector的基本概念 vector是C标准库中的一种动态数组容器,提供了动态大小的数组功能,能够在运行时根据需要自动扩展和收缩。vector以连续的内存块存储元素,可以快速访问和修改任意位置的元素。 以下是vector的基本概念和特点: 动…...