专栏首页编程坑太多世界难题-JAVA为什么要生成Class文件

世界难题-JAVA为什么要生成Class文件

题目是前两天朋友突然提出的问题,一时间答不上来。

后来仔细查了一下class文件的作用。我想javaer都清楚class文件是作为jvm的可执行文件,与C/C++的机器码文件不一样,它是字节码文件。

字节码文件的好处:

1、对源代码文件进行语法检查、语义分析,这一步骤消耗了大量的时间和资源,所以对jvm来说就要轻松多了。

2、更加抽象,一次编译到处执行,这是java的宣传口号。当然字节码文件是与平台无关的。(这点是在别资料上看到的,感觉源代码文件跨平台也是没问题的,例如python)

3、字节码文件可以看作是对源代码文件的压缩封装,占用更少的存储空间以及更快的传输速度。

自己再扩展下问题:考虑大胡子James在设计java时为什么要求在执行之前,先编译成class文件?如果是我,更倾向于将源文件直接交给jvm执行,省去javac的步骤进而由jvm自己编译。好处是程序员不用关注编译路径是否配置、源代码文件是否都编译通过、是否有个别文件的class文件没有生成、源代码与class版本是否一致等问题。

本文分享自微信公众号 - 编程坑太多(idig88),作者:看更多☞

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-03-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • java-逆波兰算法

    IT故事会
  • 『互联网架构』软件架构-解密电商系统-页面静态化(81)

    PS:秒杀系统不仅仅讲秒杀,主要是讲如何利用限流,缓存,异步分布式互联网大并发的场景。

    IT故事会
  • springboot(15)Spring Security

    IT故事会
  • 从零开始仿写一个抖音App——音视频开篇GitHub地址

    我因为主力机是 Mac,所以使用的 IDE 是 CLion,CLion 也是 JetBrain 全家桶的成员之一。使用了 Android Studio 或者 I...

    何时夕
  • VB.NET 文件操作类和示例程序。textbox和listbox联动搜索

    ''' <param name="文件路径">必填:文件路径</param>

    巴西_prince
  • 字节码文件的内部结构之谜

    如果计算机的 CPU 只有「x86」这一种,或者操作系统只有 Windows 这一类,那么或许 Java 就不会诞生。Java 诞生之初就曾宣扬过它的初衷,「一...

    Single
  • 18.3.8日报

    electron是注册了个c++对象,在node启动的时候,会hook掉原生node的fs对象(asar_init.js和asar.js里实现hook),把文件...

    龙泉寺扫地僧
  • dig、diff命令详解

    @<服务器地址>:指定进行域名解析的域名服务器; -b<ip地址>:当主机具有多个IP地址,指定使用本机的哪个IP地址向域名服务器发送域名查询请求; -f<...

    菲宇
  • 推荐:微服务入坑详细指南

    概念:微服务就是一些可独立运行、可协同工作的小的服务。微服务是现在特别流行的服务,微服务的字面意思是大家都很好理解,就是将系统拆分成很多小的独立系统,每个系统我...

    技术zhai
  • 打包错误--Error:A problem was found with the configuration of task ':app:packageRelease'.

    听着music睡

扫码关注云+社区

领取腾讯云代金券