g*****g 发帖数: 34805 | 1 应该说大多数人都连匿名内部类都不经常写,所以无所谓。但对于一些async,
concurrency类库
开发和使用者就用得很多,他们就希望加入这些feature,这些人的素质也相对高。这
个东西好坏难说,但是加上去了就不能回头。所以从java 7推到java 8,现在还在辩论。
8
bytecode |
|
z****e 发帖数: 54598 | 2 匿名内部类sucks
我从来不用匿名类
除了在做gui时候偷懒时候才用
backend我从来不用这个东西
8
bytecode |
|
d****i 发帖数: 4809 | 3 zkss, 是把.NET上的语言编译成bytecode后然后JIT,那么如何连接C/C++/assembly编
译成的machine code? |
|
k**********g 发帖数: 989 | 4
PInvoke stored as .NET Attributes (MSIL Metadata, see http://en.wikipedia.org/wiki/Metadata_(CLI) )
These attributes tell JIT how to generate the glue code. This aspect of code
-generating metadata cannot be easily encoded by bytecodes alone. |
|
n****1 发帖数: 1136 | 5 Are you kidding me? You mean clojurescript can compile existing jvm bytecode
, like xxx.jar file, into javascript?
Academia的人用python的多, 科学计算类库也多, 不是java能比的, 虽然我更喜欢java
一点. |
|
n****1 发帖数: 1136 | 6 无语了
xxx.py就是源文件, 也是库. python和javascript一样, 没有bytecode intermediate.
我说把python编译成js, 不编译xxx.py我编啥啊?
你到底用过python和java没? |
|
g*****g 发帖数: 34805 | 7 LOL,刚刚是谁装逼说没有jvm支持动态语言这个说法,拿jsr出来打脸还不够?
JVM 6之后引入了invokedynamic的支持,从而可以支持动态类型,之前你只能把动态语
言编译成jvm bytecode才能运行。也就是把动态语言当静态用。
还有脸谈深入了,越吹越丢人。 |
|
Y**G 发帖数: 1089 | 8 你的那个所谓"JVM是否支持动态语言"的依据就是JSR292,而实际上没有JSR-292,JVM上
完全可以跑动态语言。JSR 223早就有了。Rhino 在JRE 1.5上早就能运行了。
“之前你只能把动态语言编译成jvm bytecode才能运行。也就是把动态语言当静态用。
" -- 这跟我们讨论的命题"JVM是否支持动态语言"有什么关系,这对原来命题的真伪有
关系吗?
如果Java不精,还可以学,如果逻辑混乱,就是浆糊一个,没救了。 |
|
z****e 发帖数: 54598 | 9 java could be compiled to native code
and most of script languages could be compiled to bytecode
u need to study more things
native
code |
|
k**********g 发帖数: 989 | 10
C can be compiled to LLVM bytecode and then to Javascript via emscripten. |
|
i**i 发帖数: 1500 | 11 There has already been several hardware implementations of the Java system (
i.e. a CPU that can execute bytecodes) but they have not become mainstream.
This is most likely because that software implementations perform as well or
even better as CPU's have become faster and faster.
http://stackoverflow.com/questions/1383947/can-we-implement-a-j |
|
d****i 发帖数: 4809 | 12 我就知道这种帖子很容易变歪,其实C++和Java的最大区别就是,C++是native语言,编
译成机器码,Java是VM语言,编译成bytecode。根据不同的具体应用情况来选择合适的
语言。两个语言语法非常相像,Java从C++简化而来,主要的区别不在于语法,而在于
两个语言有着不同的应用领域,从而有着相对应的库和生态系统。 |
|
s****a 发帖数: 238 | 13 这个要能做早就有人做了吧,写一个从IR到bytecode后端就可以,肯定还存在不少困难。
llvm也可以用别语言实现,不过发展到现这个程已经不现实了,要不怎么说是c++的一
个机会 |
|
L***s 发帖数: 1148 | 14
大致如此。主要原因之一是基于引用计数的垃圾回收,
CPython代码里很多Py_INCREF和Py_DECREF的macros,
去掉GIL之后这些引用计数操作就不是线程安全的了。
所以在每个线程装个大锁,实现bytecode级别的线程安全。 |
|
L***s 发帖数: 1148 | 15
As far as I know, refcnt is a major reason, but not the whole story.
Python (as well as Ruby) VM bytecodes are simply way too high level
for any finer-grain locks to be useful.
PyPy, another Python implementation that trace-JITs the interpreter
itself instead of the Python program, does not support refcnt semantics
--it uses multiple gc algorithms, with minimark being the default one--
but it still has GIL present, for many reasons.
You may take a look at their STM proposal to get some ideas
ht... 阅读全帖 |
|
h****1 发帖数: 9 | 16 居然会有人把scala说成糙快猛.真心是在用scala么?
scala = oop + fp. 最后都是编译成java bytecode 的
如果scala糙快猛 那java(尤其java8)也同样糙快猛
讨论oop 和 fp 哪个更好没有任何意义 人家scala就是把两者都结合了 你可以封装
在o级别也可以封装在f级别 取决与你的不确定性是"什么东西"还是"什么行为"
这两个层面的封装即使oop的programmer也每天碰到. Google 的Predicate, 甚至java
core 里面自带的 ActionListener, Runnable, Callable 都带有浓重的functional的
味道
说白了scala就是把你封装的function 再套一层class/interface的壳子扔给jvm |
|
g*****g 发帖数: 34805 | 17 你丫不懂就别死撑,type erasure的做法是为了bytecode级别上的forward-compatible
. 指定run time是最小儿科的做法了。
C#那破东西,出了微软自己那俩破类库兼容性垃圾得一塌糊涂,开源社区这么不给力这
就是很大原因。
几个傻逼软毛成天拿个type erasure说事,我老人家ecosystem都说了快10年了,C#被
甩了3条街,SL死了,WP也差不多了。还type erasure呢? |
|
k**********g 发帖数: 989 | 18 Java OOP can be used to implement a new layer of "language" on top of it.
This new "language" could be FP. Obviously, in this situation the "language"
can only be executed in interpreted mode, unless you are able to compile it
into JVM bytecode.
http://en.wikipedia.org/wiki/Greenspun%27s_tenth_rule |
|
h******n 发帖数: 3599 | 19 【 以下文字转载自 Military 讨论区 】
发信人: hutuxian (糊涂仙), 信区: Military
标 题: 说某种语言是解释性语言的全是文科生
发信站: BBS 未名空间站 (Sat Mar 7 17:46:44 2015, 美东)
如果说, 某种语言的某个具体实现implementation 是解释性的, 可以这么说,
bytecode steam更加类似.net 和 java这种通用虚拟机器码的, 比高级解释语言效率高
, 比native compiled language不如 |
|
n******7 发帖数: 12463 | 20 一直以为javascript本来跟java没关系
当年为了伴大腿才这么叫的
但是看java官方对script的支持,又困惑了
先是说
Although scripting languages are usually interpreted at runtime, they can be
compiled into Java bytecode that can then be executed on the Java Virtual
Machine (JVM). Scripting languages can be faster and easier to use for
certain problems, so it is sometimes chosen by developers of Java
applications. However, if you write your Java application in a scripting
language, then you lose the benefits of the Java language (such as type
... 阅读全帖 |
|
x****u 发帖数: 44466 | 21 你打滚除了显示出自己的无知,还有什么意义?
人类很难做 / 技术上做不到都理解不了?
前者最简单例子,就是各种内联,变量提取,针对流水线调整,可以手动做但都是体力
活,编译器可以把你的代码改得面目全非但执行结果等价。
后者大概超出你知识范围了,很多优化是人类不可能实现的。比如jvm可以让一次编译
出的bytecode在不同场景下变化成逻辑结构不一样的最优代码。这个只能机器做。
是因
的是 |
|
x****u 发帖数: 44466 | 22 所以不行啊
有的优化必须要bytecode才能实现
function |
|
m****o 发帖数: 182 | 23 只要android上跑的是Java bytecode,看不出来对Scala和Kotlin的竞争关系会造成多
大影响,最终语言拼的还是第三方类库的支持。Scala上有akka actor,slick orm还有
play framework,再加上一堆typelevel造出的天顶星轮子,这个对于开发只有粘性的
。kotljn在语法上的某些方面有比较相对Scala比较clever的改进,但是你让人就因为
这个从了我不太相信,何况dotty出来以后任何jvm上的语言想和Scala拼feature那就是
笑话。
话说回Scala,想做android上Scala开发资源大把有,比如这个
http://scala-android.org/examples/ |
|
b***i 发帖数: 3043 | 24 这里,既然说是lua的解释程序,它就不需要atomic,就是每个lua一个解释程序线程,
每个线程解释的是不同的bytecode,根本没有共享的信息,除了quit这个bool.我觉得一
个bool不需要atomic |
|
s***o 发帖数: 2191 | 25 这么多回帖,还以为又打起来了。我觉得这个project意义还是很大的,quasar早就有
人在用了。但是因为要挂agent,做bytecode manipulation,很多人有顾虑。如果有了
jvm level native support,估计会有新一堆的framework出来。 |
|
|
m****f 发帖数: 32 | 27 Under windows, I can create a servletc.bat file like the following to place
the compiled java bytecode under the designated directory.
javac -d C:\Jakarta_Tomcat_4.0.1\webapps\myWebApp\WEB-INF\classes %1%
How can I do this under Solaris or Unix using bash please? Thanks. |
|
z****e 发帖数: 54598 | 28 r跟python什么一样,也都有多个平台上的不同版本
比如python有jython和cpython一样
r也有renjin和r自带的那个运行环境
renjin我看他们的blog说是优化了loop的执行效率
而且还通过scala来优化,这个很牛逼
如果不是对bytecode非常了解的话,做不出来
renjin能做成,那对于工业界的意义是巨大的
r最早是s语言的impl,最早s是设计用来快速实现某个想法的统计语言
其本意其实就是一个统计脚本 |
|
z*******3 发帖数: 13709 | 29 parallel跟distribution hadoop都实现了
但是hadoop本身就是一个framework
就是主要给java语言用的一个framework
而且主要是在jvm上跑,因为jvm本身是一个比较麻烦的东西
经常要tune,所以各种扯蛋事情比较多
所以还是要懂java,搞这些东西成本最低
至于python这些,其实都是通过一些java的延伸库
把python的code转换成bytecode,这种转换对于专业的java程序员来说
都感觉有些不太容易搞,有些力不从心的感觉,因为jython这些东西都比较偏门
所以这就是隔靴扰痒的源头,因为如果你要用python在hadoop上
你最好先懂java,再懂python,那这个就折腾了
搞jvm,不懂java,总会有各种扯蛋的问题遇到
到最后其实你还不如一开始就把java搞定
也没啥难的,我这边一个读arts的本科生读一个学期下来
都能a,把程序写得贼溜
当然说无脑用hadoop是一个目标
但是现阶段,难,甚至说开源社区对于这种无脑操作,有些兴趣缺缺
开源的东西从来都是以难用著称的
用spark如果不特别在乎效率的话
倒是可以用p... 阅读全帖 |
|
z*******n 发帖数: 1034 | 30 http://www.informit.com/articles/printerfriendly/2211695
Introduction to "The Java Language Specification, Java SE 8 Edition"
By James Gosling, Gilad Bracha, Alex Buckley, Bill Joy, Guy L. Steele
Date: Jun 12, 2014
The Java® programming language is a general-purpose, concurrent, class-
based, object-oriented language. It is designed to be simple enough that
many programmers can achieve fluency in the language. The Java programming
language is related to C and C++ but is organized rather dif... 阅读全帖 |
|