我很想知道其他Java程序员感受到的是他们最喜欢的语言部分,他们为什么会这样,以及为什么其他程序员也应该想要了解它。我正在寻找简单,性能等原因。谢谢。
答案 0 :(得分:22)
我最喜欢的Java API是收藏框架。我发现自己一直在使用它而不是滚动我自己的实现,它非常有趣且易于使用。它由几个有用的和 高性能数据结构和算法的可互换实现,以及围绕它们包含附加功能的几种便捷方法。
Josh Bloch的教程可以在这里找到:http://java.sun.com/docs/books/tutorial/collections/index.html
答案 1 :(得分:10)
我最喜欢的API部分绝对是java.lang。它有一个名为String
的类,它允许您轻松操作字符数组。任何认真编写优秀Java代码的程序员都应该检查一下。
答案 2 :(得分:9)
java.util.concurrent对我的生活至关重要。我们做了很多多核编程,尝试使用旧式原始线程实现所有任务只是让我感到不舒服。
并发包真正让我们的生活更轻松的一个很好的例子是它提供的专用数据结构池。我个人最喜欢的是CopyOnWriteArrayList。我们在显示任务从数据缓存中读取更新屏幕而另一个任务从网络获取信息以更新缓存的情况下使用了相当多。通常情况下,这会引发碰撞,ConcurrentModificationExceptions和类似的恐怖事件。使用CopyOnWriteArrayList,如果需要添加数据,写入任务将创建数据的新副本,从而确保读取器始终具有有效(尽管可能已过时)数据集以进行显示。
正如javadoc所说,
这通常成本太高,但可能 比替代品更有效率 当遍历操作时 超过突变,并且是有用的 什么时候你不能或不想 同步遍历,但需要 排除并发之间的干扰 线程。
Java消除了我通常会为解决这个问题而引入的各类错误,使我能够专注于我需要解决的实际问题。
答案 3 :(得分:4)
绝对是收藏框架。无论您是在服务器端Java还是客户端,图形与否,它都会一直使用。它易于使用。大多数数据结构类都有非通用版本和通用版本(最好使用第二版,但是第一版使用的是遗留代码),但除了类参数之外,它们在API方面几乎完全相同。在.NET中,两个版本可以有不同的名称/ API,它可能会变得非常混乱。我也喜欢Java Collections Framework如何将算法作为静态方法(例如Collections.sort(collectionVar))而不是实例方法。在.NET中,他们使用实例方法,并且出于某种原因,并非每个数据结构都有排序......集合框架也非常丰富,您可以找到简单和专用的数据结构(例如LinkedHashMap,它保留了插入顺序)。 / p>
我听到的一个缺点是框架表现不佳,有些人自己编写。我无法验证它,因为我没有处理性能关键的东西。
答案 4 :(得分:3)
javax.naming中
http://java.sun.com/javase/6/docs/api/javax/naming/package-summary.html
Java是一个很好的系统集成技术,因为它具有可移植性,JNDI很好地抽象出了与远程系统首次联系的复杂性。
答案 5 :(得分:3)
反射。其中一些在java.lang.reflect中,一些在java.lang中(主要是Class和ClassLoader)。
答案 6 :(得分:3)
流。 Java中的流比C ++中的流更容易掌握和实现(意见),并且通常很容易看到,基于API附带的流的名称,流将为您做什么。
答案 7 :(得分:2)
我是JPA in Java EE的粉丝。它减少了我需要为大型应用程序(可能使用EJB)和小型应用程序所做的工作量。
紧随其后的是JAAS,安全API,这里是Java SE JAAS的链接 :http://java.sun.com/javase/technologies/security/
答案 8 :(得分:2)
到目前为止,java.util.regex API包是我最喜欢的,因为它阻止了我在很多场合重新发明轮子用于各种目的的搜索和利用字符串。
答案 9 :(得分:1)
java.util非常有用。为什么?
答案 10 :(得分:1)
java.util.jar - 帮助将.jar文件加载到我的应用程序插件的类加载器中!我喜欢它。
答案 11 :(得分:1)
java.util.regex中
还有其他一些我不能没有的软件包,但是正则表达式软件包必须位于“最好的java添加”的顶层 - 绝对是收藏夹。
答案 12 :(得分:1)
我同意反思评论。到目前为止,Java API最有用/最强大的部分
答案 13 :(得分:1)
回想我的Java时代,使用的最有趣的API是java.util.concurrent,因为它为并行处理提供了经过深思熟虑且易于使用的构建块。
答案 14 :(得分:0)
InheritableThreadLocal
一路走来!
只是有这么多机会写出混淆的代码和绳子让自己挂起来似乎永远不会用完。