java是编译型的还是解释型的

解决方案 »

  1.   

    .java->编译->.class
    .class需要jvm解释(+JIT技术编译),执行。
      

  2.   

    Java很特殊。Java程序需要编译但是没有直接编译成机器语言,而是编译成字节码再用解释方式执行。。
      

  3.   

    本质上说应该算解释性吧,不过有JIT,所以也能勉强算是编译型的
      

  4.   

    编译成.class字节码,然后解释执行.
      

  5.   

    Java这个语言很特殊。
    一、你可以说它是编译型的。因为所有的Java代码都是要编译的,.java不经过编译就什么用都没有。
    二、你可以说它是解释型的。因为java代码编译后不能直接运行,它是解释运行在JVM上的,所以它是解释运行的,那也就算是解释的了。
    三、但是,现在的JVM为了效率,都有一些JIT优化。它又会把.class的二进制代码编译为本地的代码直接运行,所以,又是编译的
      

  6.   

    所以人家说,Java是中间型的。
      

  7.   

    其实主要还是看你对“编译”和“解释”怎么下定义了。按我的理解,解释的意思就是在程序执行时才开始翻译代码为二进制,并且翻译一句执行一句。
    如果解释的定义是这样,那Java绝对是编译型语言。因为,第一:Java首先被编译成了字节码,第二:字节码在执行时也不是翻译一句执行一句,而是全部翻译完成并加载入内存之后才开始执行(这个过程中JVM会进行代码优化)。所以,Java是编译型语言。
      

  8.   

     1、Java语言是简单的。Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java。另一方面,Java丢弃了C++ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。
      2、Java语言是一个面向对象的。Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C++ 语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。
       3、Java语言是分布式的。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java.net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、 ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
       4、Java语言是健壮的。Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。
       5、Java语言是安全的。Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。 
      6、Java语言是体系结构中立的。Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件), 然后可以在实现这个Java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。 
       7、Java语言是可移植的。这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。
       8、Java语言是解释型的。如前所述,Java程序在Java平台上被编译为字节码格式, 然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。   9、Java是高性能的。与那些解释型的高级脚本语言相比,Java的确是高性能的。事实上,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C++。 
       10、Java语言是多线程的。在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为Thread(Runnable) 的构造子将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。 Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。
       11、Java语言是动态的。Java语言的设计目标之一是适应于动态变化的环境。Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。
      

  9.   

    解释型的
    1.class不是机器语言,是经过编码的8位字节二进制流,它是由jvm加载后解释的。 
    2.不同的平台下虚拟机的细节实现是不同的,所以才能适应不同的平台。
      

  10.   

    先编译成class然后由解释器解析成虚拟机能读懂的字符并解释执行。所以还是解释行语言
      

  11.   

    本质上, 只要他离不开一个垫底的东西,无论他叫VM还是MV, 只要他对这个VM的依赖是有别于普通意义上的涵数调用, 那么无论他怎么羞羞答答不肯承认是解释型语言, 无论sun为他创造了多少概念来掩饰, 他就是解释语言.这就是编译理论.
    但是, 硬要在解释型语言来分出个高下, 他又比Script一路的会快一点点. 比如是老牌的basic for dos, 一句一句的从原代码Parse过去, 在轮到语义, Parse的过程是很慢的. 但是, 如果已经生成中间语言了, 如.class文件, 那就不再需要Parse原文件啦. 这时候, 可以高速地一条一条地执行中间语言, 所以, java又快些.这还是编译理论.
    然而, 他是解释型还是编译性的又有什么关系呢? 咱们就一打工的, 怎么写java都只是人的一条狗, 这条狗和名叫c的那条狗无论怎么分, 最后都可以归结为一条食屎狗, 管他呢.
      

  12.   

    准确的来说:Java语言是半编译半解释的
    从.java源代码到.class文件是编译
    运行class文件是解释执行的。
      

  13.   

    不是说java一次编译到处运行吗?
    那应该就是解释型的吧,不然编译型的肯定不能只是一次编译呀
      

  14.   

    从本质上绝对是编译型的,只是分两个阶段编译。
    JAVA绝对不会对字节码读入一句执行一句(这是解释执行的特点)。
    而是在运行前即时编译成本地码,这个过程完全是编译型的。
      

  15.   

    编译程序将源程序编译成.class字节码文件,JVM解释执行,所以从执行的角度讲,Java还是解释型的
      

  16.   

    同意28楼
    java的编译+解释
    其中:javac.exe 是java的编译器,编译之后生产.class 的字节码文件
          java.exe 是java 的解释器,可以直接运行结果的
      

  17.   

    你可以说是编译型的,也可以说是解释型的,在java被执行(解释)之前,先要被编译成字节码,
    然后在执行的时候,通过加载这些字节码来执行
      

  18.   

    Java是解释型的语言,你可以在网上搜索一下孙卫琴的书,非常出名的,那书上解释了为什么是解释型的
      

  19.   

    刚刚上完编译原理课,老师说JAVA是混合型的语言,先编译后解释~~
      

  20.   

    解释型语言更能说明他的特点,虽然说是编译和解释都有,关键和重点在于解释,java的优点和亮点也在于jvm能够解释.class文件。我是这么理解不知道对不对
      

  21.   

    恩,java是编译型和解释型语言的结合体。