我已经是C ++开发人员大约10年了。我需要为Hadoop选择Java。我怀疑我会在Java中做任何其他事情。所以,我想要一个我需要拿起的东西列表。当然,我需要学习核心语言,但还有什么?
我为此做了谷歌,这可能被视为“我想学习Java的可能重复。请告诉我怎么样?”但事实并非如此。 Java是一种庞大的编程语言,有很多库,我需要学习的内容在很大程度上取决于我使用的Hadoop。但是我想有可能说不喜欢学习这个。这也非常有用。
答案 0 :(得分:48)
在我的日常工作中,我花了一些时间帮助C ++人员通过JNI(Java Native Interface)获取足够的Java来使用一些Java库,然后将内存共享到他们主要的C ++应用程序中。以下是我注意到的一些关键事项:
如果你是一个低级别的C ++人,那么你也可能会发现其中一些有趣的东西:
希望有一些有用的东西可以继续 - 请评论/询问后续问题。
答案 1 :(得分:17)
学习“足够”Java正在学习Java。你要么学习所有的核心原则和语言设计决策,要么就是容易犯错误。考虑到你已经知道如何编程,可以掠过许多信息(着眼于它与你熟悉的其他语言的不同之处)。
所以你需要学习:
如果您没有适当的构建框架,那么如何package your compiled code。
除此之外,您可能需要学习的几乎所有其他项目在很大程度上取决于您打算做什么。不要打折the on-line tutorials from Oracle/Sun,它们相当不错(与其他在线教程相比)。
答案 2 :(得分:12)
Hadoop可以使用C ++:WordCount example in C++
答案 3 :(得分:7)
如果不了解标准API中的这些软件包,就无法真正使用Java:
java.lang
java.util
java.io
而且,程度较轻:
java.text
java.math
java.net
java.lang.reflect
java.util.concurrent
它们包含许多你需要经常用于任何应用程序的类,并且最好仔细查看它们,直到你知道它们包含哪些类以及哪些类是有用的,以免你最终重新发明车轮。
答案 4 :(得分:7)
放轻松,学习Java就可以了 如果你已经知道,快乐和快速 C ++
购买这两本书:
你很快就会掌握Java,你不会后悔的。祝你好运。
答案 5 :(得分:4)
由于C ++和Java共享共同的根源,核心语言不应该给你带来太多麻烦。你需要熟悉java SDK,特别是java.lang和Collections框架(java.util。)
但是如果你没有看到自己在其他地方使用它,那么学习java可能会有点过分。 Hadoop还绑定了Python - 也许学习python会是一个更好的选择吗? See Java vs Python on Hadoop
答案 6 :(得分:3)
答案 7 :(得分:3)
也许你甚至不需要知道Java就可以使用Hadoop。
Pig远远不够简单到高级使用Hadoop。
答案 8 :(得分:3)
我不知道你对其他更高级别的编程语言有多熟悉。 垃圾收集是Java中的一项重要功能。在您选择的VM中阅读一些关于GC的信息非常重要。
除了显而易见的软件包外,请查看java.util的collection framework个软件包。您可能想查看某些类的来源。我建议HashMap
来了解这些操作的计算/内存成本。
Java在处理大量数据时喜欢使用流而不是缓冲区。这可能需要一段时间才能适应。
Java没有无符号类型。根据您需要立即处理的数据包,您可以使用更大的变量并使用arythetics(如果我们讨论的是相对较小的数据包),或者每次读取时都必须(b[i] & 0xff)
例如无符号字节。另请注意,Java在序列化多字节数字时使用网络字节顺序(msbf)。
API最受欢迎的设计模式是Singleton,Decorator和Factory。检查JFC本身的来源以获取最佳实践,以及如何使用该语言实现这些模式。
...你仍然可以在SO上发布更具体的问题:)
答案 9 :(得分:2)
大多数东西应该对你很熟悉。我只是下载eclipse并google一个教程网站。熟悉类加载,关键字。许多C ++人员遇到的一个棘手的问题是如何运行java应用程序以便找到它的库类(类似于动态链接)。了解JRE和JDK之间的区别。如果您可以使用一些hello world类型的应用程序,那么如果您按照教程,您应该能够开始使用hadoop。
答案 10 :(得分:2)
回答1:
回答2
资料来源: http://www.linkedin.com/groups/Is-it-must-Hadoop-Developer-988957.S.141072851
答案 11 :(得分:1)
你不需要学习java来使用hadoop。
你需要知道linux到installand配置hadoop
然后您可以使用任何理解标准输入/输出的语言的流线api编写地图减少作业
此外,您可以使用其他库(如hive等)进行更复杂的地图缩减
即使像hbase / cassandra这样的hadoop的其他组件也拥有大多数语言的客户端