社区
Java SE
帖子详情
大家说说为什么项目中不直接把java编译成二进制native code?不是就快了么
wangjiamin
2004-11-20 10:40:35
.net也一样.如果说安全问题说不过去吧,那么多delphi ,c ++ c项目呢,也好好的
...全文
498
31
打赏
收藏
大家说说为什么项目中不直接把java编译成二进制native code?不是就快了么
.net也一样.如果说安全问题说不过去吧,那么多delphi ,c ++ c项目呢,也好好的
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
31 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
joe19811130
2005-02-28
打赏
举报
回复
java毕竟不同于微软的vb,vb5.0就可以编译成native code,可以快20倍,但那只是windows的产品.我们的java可是要跨平台的,一次编译,到处运行.
---------------------------------------------
Java问题还很多,一次编译到处运行还只是说说而已,问题还是很多的,但比目前的.net来说好n多
onefox
2005-01-23
打赏
举报
回复
必须承认的两点:
1、Java 的执行效率是差的
2、J2SE 是失败的
ls_aaaa
2005-01-07
打赏
举报
回复
该问题已经结贴
还可以回复吗?
onlyxu
2004-12-28
打赏
举报
回复
原来是个倒分贴
sleepy
2004-12-27
打赏
举报
回复
关键一点,效率本身并不是jvm产生的,所以那样做不见得效果好
onlyxu
2004-11-22
打赏
举报
回复
利用编译器编译成运行于不同操作系统的本地代码,也是跨平台的一个方法?
这样,所有的语言都很容易跨平台了。
skylovers
2004-11-22
打赏
举报
回复
to skylovers:
编译成原生码只是跟操作系统有关系吧,就算跟cpu也有关系,客户的cpu也不是随随便便就换的,那玩意不便宜,不是螺丝钉
---------------------------------------------------------------------------------------
追求效率的最高境界应该是放弃操作系统。直接对硬件进行操作吧,这个就是为什么汇编的效率比较高...
固定大客户的CPU不随便换,那么你的J2SE游戏程序是否都要为全世界每个系统都各做优化?此后还有更多的烦心事情在等着..比如A系统对于“加”操作快,而B系统对于“乘”操作快,那我们在写代码的时候是否还要考虑?
native code --->OS--->Hardware
实现业务逻辑--->屏蔽底层硬件操作,提供上层逻辑接口--->硬件操作..
byte code ---> Jvm ---> OS ---> Hardware
实现业务逻辑--->屏蔽操作系统的差异,提供统一的编码接口--->屏蔽底层硬件操作,提供上层逻辑接口--->硬件操作..
当然,我这么说是有些偏激了。还是那句话:有时候效率不是最关键的。无论是操作系统还是JVM都是一个平台,来让我们安心做自己该做的事情。不然我们就又会回到为了提高效率而去追求熟悉各个操作系统的路子上去了...而有了JVM,那仅仅是SUN的工程师去考虑的事情....
wangjiamin
2004-11-22
打赏
举报
回复
to all:
有没有人在工程中实际编译果native code的?这样子可以给大家个参照,至少是决绝效率问题的一个方案
wtobias
2004-11-22
打赏
举报
回复
hehe
beakham
2004-11-21
打赏
举报
回复
JAVA毕竟要考虑到平台无关性~~~
jFresH_MaN
2004-11-21
打赏
举报
回复
呵呵,java要是不编译成class文件让jvm执行,那它怎么跨平台
那java还有什么优势
catblue
2004-11-21
打赏
举报
回复
听大家说说,我也不懂
onefox
2004-11-21
打赏
举报
回复
他的意思是说,预先根据几个平台编译成 2进制 的版本备用,发布。
Joelay
2004-11-21
打赏
举报
回复
我们做的程序的服务端,就是在windows下开发,在solaris上运行的。调试的时候自己起个server,没问题了把class打包上传,多方便。而且如果全部变成本地代码的话,rmi和序列化肯定会有麻烦吧。
theoffspring
2004-11-21
打赏
举报
回复
究竟怎么编译成原生码,真想试试,看看效率如何
theoffspring
2004-11-21
打赏
举报
回复
to skylovers:
编译成原生码只是跟操作系统有关系吧,就算跟cpu也有关系,客户的cpu也不是随随便便就换的,那玩意不便宜,不是螺丝钉
febchen
2004-11-21
打赏
举报
回复
跨平台的目标是建立在多种操作系统并存的基础上的,在目前单一window操作系统的情况下(特别是中国),确实不如本地编译。
如果哪一天你机器上是windows和linux并存并都支持java的话,理论上只要一个java的word软件就可以了。
目前orcale和db2的管理器都是用java写的,这些数据库的运行平台一般是unix,而管理可以在unix上,也可在window上远程管理,此时只要开发一套管理程序就可以了。当然,从实际情况看,这些管理程序在window上运行实在是累。
java本来就有2个方展方向,网络应用(J2EE)和独立应用程序,显然目前前者还是强项。
javafaq2004
2004-11-21
打赏
举报
回复
楼上的,总不至于发布的时候带上编译器吧?
theoffspring
2004-11-21
打赏
举报
回复
怎么编译成原生码,编码成不同的平台的原生码不照样跨平台吗,反正只编写了一次,何必在乎编译几次。
wangjiamin
2004-11-21
打赏
举报
回复
to all:我的观点:
1,java的跨平台是他的优点,但实际上大家有几个项目是在多个平台上调试运行的?多说是一个平台吧?一般是支持不同的版本而已。特别是作项目的的,平台固定的更死了,跨平台并不会真正给用户带来价值(提高工作效率),程序快了则可以。。。
2, 我知道.net中几个核心的库本来就是编译成本地代码的,一般资料也是说这样作为了效率。
3, 我接触的客户,如果真能提高效率,他们是不介意怎么作的?
如果这样,如果native code能大幅度提高效率,为什么不??
又一个问题,如果nativecode只是提高 2%一下的,是不是很有意义的,如果有30%呢。谁知道测试结果
加载更多回复(11)
带你看明白class
二进制
文件!
一、虚拟机的基石:Class文件 1.字节码文件里是什么? 源代码经过编译器编译之后便会生成一个字节码文件,字节码是一种
二进制
的类文件,它的内容是JVM的机器码指令,而不像C、C++经由编译器
直接
生成机器码。 2.什么是字节码指令(byte
code
)?
Java
虚拟机的指令由一个字节长度的、代表着某种特定操作含义的操作码(op
code
)以及跟随其后的零至多个代表此操作的所需参数的操作数(operand)所构成。虚拟机
中
许多指令并不包含操作数,只有一个操作码。 ...
java
基础知识整理
第一章 1、
Java
中
没有指针、结构和类型定义等概念,没有全局变量,没有#include和#define等预处理器,也没有多重继承的机制。只允许单重继承。在
Java
中
,class定义的大括号之后没有分隔符“;”。 2、
Java
源代码使用的是Uni
code
码,而不是ASCⅡ码,Uni
code
码是用16位
二进制
表示的一个字符。
Java
编译器将
Java
程序
编译成
二进制
代码。 3、编译后的
Java
程
代码生成(
Code
Generation) 表达式编译
代码生成(
Code
Generation)技术广泛应用于现代的数据系统
中
。代码生成是将用户输入的表达式、查询、存储过程等现场
编译成
二进制
代码再执行,相比解释执行的方式,运行效率要高得多。尤其是对于计算密集型查询、或频繁重复使用的计算过程,运用代码生成技术能达到数十倍的性能提升。 当我们谈论代码生成时我们在谈论什么 很多大数据产品都将代码生成技术作为卖点,然而事实上他们往往谈论的不是一件事情。比如,之前就有人提问:Spark 1.x 就已经有代码生成技术,为什么 Spark 2.0 又把代码生成吹了一番?其
中
Java
使用JNI调用
Native
方法原理
前言 写这个是出于好奇。 我们知道cpu只认得 “0101101” 类似这种符号, C、C++ 这些代码最终都得通过编译、汇编成
二进制
代码,cpu才能识别。而
Java
比C、C++又多了一层虚拟机,过程也复杂许多。
Java
代码经过
编译成
class文件、虚拟机装载等步骤最终在虚拟机
中
执行。class文件里面就是一个结构复杂的表,而最终告诉虚拟机怎么执行的就靠里面的字节码
说
明。
Java
虚拟机在执行的时候,可以采用解释执行和编译执行的方式执行,但最终都是转化为机器码执行。
Java
虚拟机运行时的数据区,
hadoop3.2.3 编译
native
库(超详细,亲测成功)
目录为什么要编译
native
库安装工具包安装 zlib,bzip2,lz4安装 openssl安装 JDK8,maven安装 cmake安装 protobuf安装 snappy安装 zstd安装 isa-l安装 aws-DynamoDBLocal 包安装 aws-
java
-sdk-bundle 包编译
native
库验证踩坑总结 为什么要编译
native
库 hadoop
二进制
包是提供预编译的
native
库,但是 32 位的,服务器基本是 64 位,所以需要重新编译
native
库, 安装工
Java SE
62,614
社区成员
307,326
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章