由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - Java 写的程序在server端也是在JVM上run吗?
相关主题
有时候我很好奇这些古怪的思想是怎么来的Scala的用途
Sun当年设计Java的败笔java的内存管理真是气死我了
GCJ问题学scala和spark需要什么pre req?
这波Big Data下来JVM大胜,.NET大败呀。java是最好的语言
c++程序员不要把头埋在沙子里了Java必然败在oracle身上
古狗研究新出炉:C++ Is The Best Performing Language以后Web就是Node的天下了
java就是andriod慢的原因,为什么总有人要争呢? (转载)把web app转变成native app,那种方法可行
Java的performance我来尽量客观地谈谈GC/ref count,还有RAII
相关话题的讨论汇总
话题: java话题: jvm话题: server话题: os话题: native
进入Programming版参与讨论
1 (共1页)
q********y
发帖数: 162
1
尤其是在那种成千上万个cluster上跑的。如果是,为什么不把Java程序编译成native
binary,直接以native process 在 server端跑。这样不是快很多吗?问题可能比较傻
,请见谅!
t***a
发帖数: 416
2
都是在jvm上运行
早先的java版本是把byte code给jvm解释执行
现在是用JIT(just in time compiler) 边load边编译成native code直接给processor
执行
所以java class load是很慢的,但是执行起来的速度还是很快的

native

【在 q********y 的大作中提到】
: 尤其是在那种成千上万个cluster上跑的。如果是,为什么不把Java程序编译成native
: binary,直接以native process 在 server端跑。这样不是快很多吗?问题可能比较傻
: ,请见谅!

q********y
发帖数: 162
3
谢谢你的回答。
如果Java程序不是那种在cloud上跑的应用,而是本身就是提供infrastructure的,如
那些个
Hadoop,Cassandra什么的,为什么不把他们一次性编译成native code?

processor

【在 t***a 的大作中提到】
: 都是在jvm上运行
: 早先的java版本是把byte code给jvm解释执行
: 现在是用JIT(just in time compiler) 边load边编译成native code直接给processor
: 执行
: 所以java class load是很慢的,但是执行起来的速度还是很快的
:
: native

z****e
发帖数: 54598
4
你可以一次性编译成native code啊
这个可以借助第三方工具实现
但是多数时候没有必要
因为这样就跟os绑定了
可能会发生一些特定os上才发生的bugs
当然绝大多数时候也不会发生
我觉得你完全可以这么做,没有太大问题
另外一个就是java诞生之初就对客户做了一个承诺
那就是compile once, run everywhere
如果编译成native code的话,就违背了这个承诺
所以大多数时候不提倡这么操作
但是你完全可以这么做,也可以做到,不是很难的事

【在 q********y 的大作中提到】
: 谢谢你的回答。
: 如果Java程序不是那种在cloud上跑的应用,而是本身就是提供infrastructure的,如
: 那些个
: Hadoop,Cassandra什么的,为什么不把他们一次性编译成native code?
:
: processor

t***a
发帖数: 416
5
用jit这种dynamic的编译方法,有如下好处
1,根据不同cpu,heap大小可以生成不同的native code
2, 可以根据用户如何使用code来优化编译,而不是只通过分析code本身
3,class的load和unload尽在掌握,随时可以重新编译
以前玩gentoo的时候,动不动就重新编译一天,这种事在java世界就不会有了。。。。

【在 q********y 的大作中提到】
: 谢谢你的回答。
: 如果Java程序不是那种在cloud上跑的应用,而是本身就是提供infrastructure的,如
: 那些个
: Hadoop,Cassandra什么的,为什么不把他们一次性编译成native code?
:
: processor

t***a
发帖数: 416
6
java不是这么玩的。。。。虽然总有人想这么干

【在 z****e 的大作中提到】
: 你可以一次性编译成native code啊
: 这个可以借助第三方工具实现
: 但是多数时候没有必要
: 因为这样就跟os绑定了
: 可能会发生一些特定os上才发生的bugs
: 当然绝大多数时候也不会发生
: 我觉得你完全可以这么做,没有太大问题
: 另外一个就是java诞生之初就对客户做了一个承诺
: 那就是compile once, run everywhere
: 如果编译成native code的话,就违背了这个承诺

q********y
发帖数: 162
7
但是像Java 的 bigdata 一大类应用如Hadoop实际也都是在linux cluster上跑吧。也
就是事实上跟os绑定了。而且作为公司来说,也不在意这种os绑定,又不是终端消费者
,变来变去的。
对提供infrastructure服务的一大票如Cassandra等为什么没有必要啊?
对客户的承诺 “compile once, run everywhere”主要是针对front end 和
Application
developper 的吧? 作为backend infrastructure,就像你常说的,各个大公司都是定
制的,
什么“os绑定”,“compile once, run everywhere”应该没人在意吧?

【在 z****e 的大作中提到】
: 你可以一次性编译成native code啊
: 这个可以借助第三方工具实现
: 但是多数时候没有必要
: 因为这样就跟os绑定了
: 可能会发生一些特定os上才发生的bugs
: 当然绝大多数时候也不会发生
: 我觉得你完全可以这么做,没有太大问题
: 另外一个就是java诞生之初就对客户做了一个承诺
: 那就是compile once, run everywhere
: 如果编译成native code的话,就违背了这个承诺

q********y
发帖数: 162
8
谢谢你告诉我这些东西。
我怕再问下去就nagging了。

【在 t***a 的大作中提到】
: 用jit这种dynamic的编译方法,有如下好处
: 1,根据不同cpu,heap大小可以生成不同的native code
: 2, 可以根据用户如何使用code来优化编译,而不是只通过分析code本身
: 3,class的load和unload尽在掌握,随时可以重新编译
: 以前玩gentoo的时候,动不动就重新编译一天,这种事在java世界就不会有了。。。。

z****e
发帖数: 54598
9
任何java的产品,都能在windows和unix上跑
所以说,cassandra和hadoop都可以在win/unix server上用
但是这种要处理io,所以有些时候会出现一些特定的问题
在不同的os上,但是理论上是完全可以用的
hadoop的file system也就是hdfs还不够成熟,版本现在好像还在0.x
所以正式版还没有出来,所以完全有可能遇到各种问题
这就是现实世界,现在开源的big data还不很成熟
还需要时间

【在 q********y 的大作中提到】
: 但是像Java 的 bigdata 一大类应用如Hadoop实际也都是在linux cluster上跑吧。也
: 就是事实上跟os绑定了。而且作为公司来说,也不在意这种os绑定,又不是终端消费者
: ,变来变去的。
: 对提供infrastructure服务的一大票如Cassandra等为什么没有必要啊?
: 对客户的承诺 “compile once, run everywhere”主要是针对front end 和
: Application
: developper 的吧? 作为backend infrastructure,就像你常说的,各个大公司都是定
: 制的,
: 什么“os绑定”,“compile once, run everywhere”应该没人在意吧?

z****e
发帖数: 54598
10
一般大公司不会定制jvm下的东西
因为大公司下面一堆乱七八糟的操作系统
大部分公司都有linux/windows/unix的os
很多,开发机器现在还有macosx,所以不同平台上的兼容性是一个很大的问题
比如我们开发一般都是macosx,测试用的是windows
但是实际部署时候,生产环境用的是linux
如果不用java,那就要每次都跑生产环境上去编译
这样搞会挂,所以jvm是很重要的一个工具,没有jvm的话
很多问题搞不定啊,pc上的os跟server上的os一般来说不一样
compile once run everywhere其实对server side来说才是最重要的
mobile和pc上其实现在jdk8.0以后的版本就初步有打算搞native compiling了
javafx就有这个选择

【在 q********y 的大作中提到】
: 但是像Java 的 bigdata 一大类应用如Hadoop实际也都是在linux cluster上跑吧。也
: 就是事实上跟os绑定了。而且作为公司来说,也不在意这种os绑定,又不是终端消费者
: ,变来变去的。
: 对提供infrastructure服务的一大票如Cassandra等为什么没有必要啊?
: 对客户的承诺 “compile once, run everywhere”主要是针对front end 和
: Application
: developper 的吧? 作为backend infrastructure,就像你常说的,各个大公司都是定
: 制的,
: 什么“os绑定”,“compile once, run everywhere”应该没人在意吧?

相关主题
古狗研究新出炉:C++ Is The Best Performing LanguageScala的用途
java就是andriod慢的原因,为什么总有人要争呢? (转载)java的内存管理真是气死我了
Java的performance学scala和spark需要什么pre req?
进入Programming版参与讨论
t***a
发帖数: 416
11
jit这东西还是没c++快。。。更别说c了
可怎么办呢,就算一次性编译成native code减少的可能只是class load的时间, 这事
水太深了,c++编译器都搞了这么多年了,这条路也不好走啊

【在 q********y 的大作中提到】
: 谢谢你告诉我这些东西。
: 我怕再问下去就nagging了。

z****e
发帖数: 54598
12
各大公司一般不定制os,从jvm以下的部分
都是直接买或者直接用现成的产品
要么开源要么商用,现在做os的越来越少了
就是jvm也越来越少有公司在做了
定制的部分在jvm以上,其实企业端的定制部分会再往上一点
jvm以上的app server都是产品,然后app server这个容器内
的东西,才是真正定制的,其它都是类似的产品
品牌不一样而已,ibm的叫websphere,oracle的叫weblogic
red hat的叫jboss etc.
web公司现在如果用java的big data产品的话
从jvm以上开始定制,比如amazon和linkedin
都用jvm,但是写的java code,那就不是一回事了大相迳庭了
如果不用java的话,从os以上开始定制
或者python或者ruby或者php或者tomcat etc.
象google这种公司,则是干脆从底层自己搞
但是没有多少公司能像google这么折腾的,google有钱有能人能做事
其它公司找不到能写os的

【在 q********y 的大作中提到】
: 但是像Java 的 bigdata 一大类应用如Hadoop实际也都是在linux cluster上跑吧。也
: 就是事实上跟os绑定了。而且作为公司来说,也不在意这种os绑定,又不是终端消费者
: ,变来变去的。
: 对提供infrastructure服务的一大票如Cassandra等为什么没有必要啊?
: 对客户的承诺 “compile once, run everywhere”主要是针对front end 和
: Application
: developper 的吧? 作为backend infrastructure,就像你常说的,各个大公司都是定
: 制的,
: 什么“os绑定”,“compile once, run everywhere”应该没人在意吧?

g*****g
发帖数: 34805
13
最重要的原因,大多数server应用的瓶颈并不在CPU上,你就算直接上C,throughput也
不会更好。
server应用最常见的瓶颈在DB IO上。而且JIT最多也就比C慢一倍。

【在 q********y 的大作中提到】
: 但是像Java 的 bigdata 一大类应用如Hadoop实际也都是在linux cluster上跑吧。也
: 就是事实上跟os绑定了。而且作为公司来说,也不在意这种os绑定,又不是终端消费者
: ,变来变去的。
: 对提供infrastructure服务的一大票如Cassandra等为什么没有必要啊?
: 对客户的承诺 “compile once, run everywhere”主要是针对front end 和
: Application
: developper 的吧? 作为backend infrastructure,就像你常说的,各个大公司都是定
: 制的,
: 什么“os绑定”,“compile once, run everywhere”应该没人在意吧?

c****e
发帖数: 1453
14
pre-JIT is not recommended in general. The client requests will warm up your
server code very fast.
z****e
发帖数: 54598
15
在mobile和tablet上就没那么快了
可能以后会有那么快,这个要靠小菊花和猴屁股们的努力了
所以现阶段,client side的native compiling还是用比较大市场的

your

【在 c****e 的大作中提到】
: pre-JIT is not recommended in general. The client requests will warm up your
: server code very fast.

t***a
发帖数: 416
16
server side那是没啥问题,至于客户端嘛,我这么多年做的都是不要求performance的
。。。启动慢点就慢点,我记得java 1.4的时候,有客户抱怨,我们就让他启动的时候
去倒杯咖啡。。。。

your

【在 c****e 的大作中提到】
: pre-JIT is not recommended in general. The client requests will warm up your
: server code very fast.

g*****g
发帖数: 34805
17
Android上的应用,一点不慢。这个东西是要靠优化的,windows是M$的,Sun/Oracle想
在Windows上优化,有难度。到Android上,底下的OS为了上面的VM该怎么改就怎么改,
就可以做到。

【在 z****e 的大作中提到】
: 在mobile和tablet上就没那么快了
: 可能以后会有那么快,这个要靠小菊花和猴屁股们的努力了
: 所以现阶段,client side的native compiling还是用比较大市场的
:
: your

t*****n
发帖数: 4908
18
android的慢是出了名的。类似的硬件,ios流畅的很。android 3/4搞了个硬件加速,
就到处吹嘘。要是足够的快的,还搞什么加速?
android就是移动os史一个笑话。每天用同样的硬件,要什么虚拟机?
z****e
发帖数: 54598
19
貌似google对android做了一定程度的优化
但是下面的oem产商改了不少,水平达不到
所以速度就跟不上了

【在 g*****g 的大作中提到】
: Android上的应用,一点不慢。这个东西是要靠优化的,windows是M$的,Sun/Oracle想
: 在Windows上优化,有难度。到Android上,底下的OS为了上面的VM该怎么改就怎么改,
: 就可以做到。

g*****g
发帖数: 34805
20
LOL,移动史上的笑话秒了所有其他系统的总和。包括PC。

【在 t*****n 的大作中提到】
: android的慢是出了名的。类似的硬件,ios流畅的很。android 3/4搞了个硬件加速,
: 就到处吹嘘。要是足够的快的,还搞什么加速?
: android就是移动os史一个笑话。每天用同样的硬件,要什么虚拟机?

z****e
发帖数: 54598
21
这就是你跟google的差距
google赌的是将来,拼的是明天
十年前或者二十年前你同样可以说java在pc上很慢
今天那就是另外一个故事了

【在 t*****n 的大作中提到】
: android的慢是出了名的。类似的硬件,ios流畅的很。android 3/4搞了个硬件加速,
: 就到处吹嘘。要是足够的快的,还搞什么加速?
: android就是移动os史一个笑话。每天用同样的硬件,要什么虚拟机?

g*****g
发帖数: 34805
22
市场不是以小码农个人意志为转移的。要吗随波逐流,要吗被扒掉底裤。

【在 z****e 的大作中提到】
: 这就是你跟google的差距
: google赌的是将来,拼的是明天
: 十年前或者二十年前你同样可以说java在pc上很慢
: 今天那就是另外一个故事了

1 (共1页)
进入Programming版参与讨论
相关主题
我来尽量客观地谈谈GC/ref count,还有RAIIc++程序员不要把头埋在沙子里了
这次vert.x 彻底输给NodeJX 了古狗研究新出炉:C++ Is The Best Performing Language
蜥蜴和好虫掐起来了java就是andriod慢的原因,为什么总有人要争呢? (转载)
Hejlsberg比Gosling牛10倍Java的performance
有时候我很好奇这些古怪的思想是怎么来的Scala的用途
Sun当年设计Java的败笔java的内存管理真是气死我了
GCJ问题学scala和spark需要什么pre req?
这波Big Data下来JVM大胜,.NET大败呀。java是最好的语言
相关话题的讨论汇总
话题: java话题: jvm话题: server话题: os话题: native