所以直到大约6个月前,我的大部分工作(大图处理)都包含Python和C++.到目前为止,甚至现在,我还没有编写任何Java ..我已经看过语言并且熟悉语法(来自C/C++背景),并且喜欢JVM的想法,但从来没有实际上写了大量的Java.
当我拿起Scala时,我非常喜欢它,OOP和函数式编程功能于一体,它在JVM上非常棒.我一直在努力改进我的Scala并且一直在玩Akka,并且仍然喜欢它.然而,有时候,也许只是我推翻它,但我觉得我应该学习更多关于Java和/或JVM的知识.
我从很多人那里听说Scala应该被认为是一种与Java不同的语言,就像C++到C.也许你可能会有同样的感觉,也许学习Java或多或少与学习Scala不相干,但我感觉学习更多关于JVM(例如JIT编译,类型擦除)会有帮助吗?
思考?
zig*_*tar 10
JVM执行Bytecode,它肯定有助于了解它是如何工作的,正如有时有助于了解C/C++方法调用的工作方式或类的初始化方式; 因为有时它很重要而且不能被抽象掉.
Java是JVM的主要语言,如果您需要直接使用Java类,那么能够在某种程度上读取Java是有帮助的.这可能经常发生; 只有几个例子:
但我的建议不是提前研究它 - 你会在需要的时候拿起它.
我的头顶
原语,自动装箱以及java数组如何特殊;
擦除和清单
如何编译scala源中的逻辑尾递归调用
在您的平台上安装-client,-server以及何时想要尝试32位:例如在OS X中使用JAVA_HOME和"Java首选项".我认为 openJDK应该可以在任何使用相同版本的Oracle JDK的地方工作,但IntelliJ警告您只能使用官方Oracle JDK.我已经看到非常孤立的报告说3d图形库有openJDK的问题,而且openJDK的部分字体也有许可问题.
在REPL中设置类路径,作为编译器选项,在SBT中
热点交换机,XMX,XMS(堆设置),最常见的垃圾收集器,内联方法调用
java.util.concurrent中
在JDK 6和7中编译的java和scala代码可能存在二进制兼容性问题.
我不确切知道你需要什么,但是在SO上有几个类似的问题,看看吧.
另外,这里有Java Memory Model的好文章
我认为最好挖掘Java语言,编写一些代码,阅读特定于Java的书籍,以便更好地理解所有东西的工作原理.