0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

初学者:讲解Java程序的开发与运行原理

如意 来源:博学谷 作者:照照 2020-08-13 15:01 次阅读

可能刚刚接触编程的初学者会发现,编写一个Java程序其实很简单,但是Java程序的运行过程却是非常复杂的。关于Java程序工作原理这部分知识,虽然不要求编程学习者完全掌握,你但是至少需要了解它的大致过程。下面小编将好好介绍一下Java程序的开发与运行原理,大致分为以下三步:编写源文件、编译以及运行。

初学者:讲解Java程序的开发与运行原理

1、编写源文件

编写的代码,称为“源代码”或“源码”。一般情况下,我们会把源代码保存到后缀名为.java的文本文件里,这样的文件叫源文件。 为了方便,我们会保持文件名与类的名字一致(包括大小写)。

2、编译

源文件是程序员编写的,我们能够轻松识别每一行代码的意思,但是,在计算机中,CPU只能识别二进制指令。所以,现在要做的工作就是,需要在源文件和计算机指令之间进行转换。由于Java语言的结构和特性,设计者们先将源文件转换成一种特殊的二进制文件,然后将这个二进制文件交给Java运行时环境(JRE)去执行。转换成二进制文件的过程,叫做编译(这个过程使用了 javac 命令),生成的二进制文件,叫做字节码文件(后缀名是 .class )。如Test.java经过编译就会生成Test.class。这个过程全部由Java编译器自动完成,不需要程序员进行任何特殊操作。

3、运行

Java程序的开与运行原理,并不是将字节码文件(.class文件)简单的交给操作系统去执行,那是因为不同的操作系统中数据的大小、范围和计算方式有很大不同,会导致同一段代码在不同系统之间运行效果差别很大,这不是设计者们想要看到的。

初学者:讲解Java程序的开发与运行原理

Java的设计者们想到了一个聪明的办法,就是针对不同的操作系统,分别编写了一个可以正确执行Java程序的虚拟机(JVM),然后把这个虚拟机内置到 Java 的运行时环境(JRE)中,这样,同一段Java代码,就可以在不同的操作系统上运行出相同的效果了。将字节码文件(.class)交给Java运行时环境(JRE)执行的过程,叫做Java程序的运行(这个过程使用了 java 命令)。

总的来说,Java程序的开发与运行原理就是把源文件编译成字节码文件,然后运行,在终端显示结果。因此,从编写源代码,到程序输出结果,这个过程看似简单,其实需要大家学习和掌握的内容还有很多~

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA
    +关注

    关注

    19

    文章

    2974

    浏览量

    105048
  • 程序
    +关注

    关注

    117

    文章

    3795

    浏览量

    81337
  • 源代码
    +关注

    关注

    96

    文章

    2946

    浏览量

    66894
收藏 人收藏

    评论

    相关推荐

    EE-269:以太网802.3初学者指南

    电子发烧友网站提供《EE-269:以太网802.3初学者指南.pdf》资料免费下载
    发表于 01-05 09:48 0次下载
    EE-269:以太网802.3<b class='flag-5'>初学者</b>指南

    SSM框架在Java开发中的应用 如何使用SSM进行web开发

    SSM框架,即Spring、SpringMVC和MyBatis的整合,是Java Web开发中常用的技术栈。它通过分层架构,实现了视图、控制、业务逻辑和数据访问的分离,提高了代码的可维护性和可扩展性
    的头像 发表于 12-16 17:28 630次阅读

    XD08M3232红外感应单片机开发板适合初学者吗?

    XD08M3232是一款国产8位高性能Flash的接近感应单片机,具有较大的内存、恒流驱动电路、内置运算放大器和模拟比较器等特点。对于初学者来说,选择合适的开发板是非常重要的,因为它将直接影响
    发表于 12-07 14:55

    对比Python与Java编程语言

    Python与Java都是目前非常流行的编程语言,它们各有其独特的优势和适用场景。以下是对这两种编程语言的对比: 一、语法和易用性 Python 语法简洁,代码更易读,非常适合初学者。 动态类型系统
    的头像 发表于 11-15 09:31 420次阅读

    我用的是multisim14.0,因为是初学者,仿真电路的时候找不到合适的模型,应该怎么办?

    我用的是multisim14.0,因为是初学者,仿真电路的时候找不到合适的模型,应该怎么办? 比如我电路用的是AO3400的NMOS,但是在multisim14.0软件自带的元件库里面没找到类似的,开启电压是1.5v的nmos,请教大家,应该怎么办?
    发表于 08-23 10:59

    三十分钟入门基础Go Java小子版

    语法与 C 相近,但功能上有:内存安全,GC,结构形态及 CSP-style 并发计算。 适用范围 本篇文章适用于学习过其他面向对象语言(Java、Php),但没有学过Go语言的初学者。文章 主要从Go
    的头像 发表于 08-12 14:32 779次阅读
    三十分钟入门基础Go <b class='flag-5'>Java</b>小子版

    华纳云:java web和java有什么区别java web和java有什么区别

    的平台,Java可以用于开发桌面应用程序、移动应用程序、企业级应用程序等。 – Java Web
    的头像 发表于 07-16 13:35 884次阅读
    华纳云:<b class='flag-5'>java</b> web和<b class='flag-5'>java</b>有什么区别<b class='flag-5'>java</b> web和<b class='flag-5'>java</b>有什么区别

    红豆Cat 1开源 项目四: 从0-1设计一款TCP版本DTU产品的软硬件全过程

    定义、硬件设计分析、软件设计分析,并详细讲解单一功能点功能模块的验证过程和测试验证方法。通过学习本内容,初学者可以在 1-2 天内完成一款 Cat 1 DTU产品的开发全过程,快速提升物联网产品
    的头像 发表于 07-12 14:43 372次阅读
    红豆Cat 1开源 项目四: 从0-1设计一款TCP版本DTU产品的软硬件全过程

    红豆Cat 1开源 项目二: 从0-1设计一款MQTT版本DTU 支持GNSS 产品的软硬件全过程

    的软硬件定义、硬件设计分析、软件设计分析,并详细讲解单一功能点功能模块的验证过程和测试验证方法。通过学习本内容,初学者可以在 1-2 天内完成一款 Cat 1 DTU产品的开发全过程,快速提升物联网产品
    的头像 发表于 07-12 14:30 385次阅读
    红豆Cat 1开源 项目二: 从0-1设计一款MQTT版本DTU 支持GNSS 产品的软硬件全过程

    适合初学者的嵌入式项目有哪些?

    适合初学者的嵌入式项目有哪些? 嵌入式学习是一个实践性很强的领域,通过实际项目可以帮助你巩固理论知识并提升技能。以下是几个适合初学者练手的嵌入式项目,每个项目都涵盖了从硬件到软件的不同层面
    发表于 07-11 10:23

    鸿蒙ArkUI-X跨平台技术:【开发准备】

    本文档适用于ArkUI跨平台应用开发初学者。通过开发环境搭建、应用工程创建、编译和运行,熟悉ArkUI跨平台应用开发基本流程。
    的头像 发表于 05-24 10:40 554次阅读
    鸿蒙ArkUI-X跨平台技术:【<b class='flag-5'>开发</b>准备】

    鸿蒙ArkUI-X框架开发:【开发准备】

    本文档适用于ArkUI-X框架开发初学者。通过环境搭建、代码下载、代码编译、API扩展和使用,快速了解跨平台项目开发流程。
    的头像 发表于 05-23 21:02 519次阅读
    鸿蒙ArkUI-X框架<b class='flag-5'>开发</b>:【<b class='flag-5'>开发</b>准备】

    基于STM32的智能循迹小车

    初学者的智能小车
    的头像 发表于 05-08 14:43 4053次阅读
    基于STM32的智能循迹小车

    国内哪家的FPGA适合初学者

    如题,想着手学习FPGA的话,国内哪家的比较好,更适合初学者学习?这方面的经验,是一点都没。
    发表于 04-14 19:17

    初学者请问各位大佬

    为什么在89C51单片机中R1可以提供低地址 在外部扩展RAM中不是P0口提供低8位地址P2口提供高8位地址吗初学者有些不理解望各位大佬解答一下谢谢
    发表于 02-23 16:39