我们最喜欢Java API的领域是什么?
我很好奇,想知道其他Java程序员觉得他们最喜欢的语言是什么,为什么他们会有这种感觉,以及为什么其他程序员也应该对此语言有深入的了解。我正在寻找诸如简单性,性能等原因。谢谢。
解决方案
我最喜欢的Java API是Collections Framework。我发现自己一直在使用它,而不是滚动自己的实现,它非常有趣且易于使用。它由几个有用的
高性能数据结构和算法的可互换实现,以及用于在其周围包装添加功能的几种便捷方法。
我们可以在以下位置找到Josh Bloch的教程:http://java.sun.com/docs/books/tutorial/collections/index.html
我是Java EE中JPA的忠实拥护者。它减少了我对大型应用程序(将使用EJB)和小型应用程序要做的工作量。
紧随其后的是安全性API JAAS,这是Java SE JAAS的链接
:http://java.sun.com/javase/technologies/security/
java.util非常实用。为什么?
- 集合。其中很多!
- 日期和时间类
- 文字扫描仪
- 依赖项注入实用程序(自Java 6起)
- 计时器线程
- 随机数
- 观察者模式在那里
- Java属性
javax.naming
http://java.sun.com/javase/6/docs/api/javax/naming/package-summary.html
Java具有可移植性,因此它是一种出色的系统集成技术,而JNDI很好地抽象了首次与远程系统联系的复杂性。
我最喜欢的API部分肯定是java.lang。它有一个名为" String"的类,它使我们可以轻松地操作字符数组。任何认真编写好的Java代码的程序员都应该检查一下。
绝对是收藏框架。无论我们使用的是服务器端Java还是图形用户端,它一直都在使用。易于使用。大多数数据结构类都具有非泛型和泛型版本(最好使用第二种,但遗留代码大量使用第一种),但是除了类参数以外,它们在API方面几乎相同。在.NET中,这两个版本可以具有不同的名称/ API,并且可能会造成混乱。我还喜欢Java Collections Framework如何将算法作为静态方法(例如Collections.sort(collectionVar))而不是作为实例方法使用。在.NET中,它们使用实例方法,并且由于某种原因,并不是每个数据结构都具有某种排序方式...集合框架也非常丰富,我们可以找到简单和专用的数据结构(例如保留插入顺序的LinkedHashMap)。
我听说过的一个缺点是,该框架的性能不佳,有些人编写了自己的框架。我无法验证它,因为我不处理对性能有严格要求的东西。
java.util.jar帮助将.jar文件加载到我的应用程序插件的类加载器中!我喜欢它。
java.util.regex
还有其他一些我不能没有的程序包,但是regex程序包必须位于"对Java的最大补充"的顶层-绝对与Collections一样。
反射。有些是java.lang.reflect中有的在java.lang中(主要是类和类加载器)。
我同意反思的评论。到目前为止,Java API中最有用/最强大的部分
流。 Java中的流比C ++中的流更容易掌握和实现(意见),并且基于API附带的流的名称,通常很容易看到流将为我们做什么。
回顾我的Java时代,使用的最有趣的API就是java.util.concurrent,这仅仅是因为它为并行处理提供了经过深思熟虑且易于使用的构造块。
java.util.concurrent对我的生活至关重要。我们进行了大量的多核编程,尝试使用旧式原始线程来实现所有任务的想法使我感到不舒服。
并发包真正使我们的生活更轻松的一个很好的例子是它提供的专用数据结构池。我个人最喜欢的是CopyOnWriteArrayList。在显示任务正在从数据高速缓存中读取以更新屏幕,而另一任务正在从网络获取信息以更新高速缓存的情况下,我们会使用很多情况。通常,这会引发冲突,ConcurrentModificationExceptions和类似的恐怖事件。使用CopyOnWriteArrayList时,写入任务需要添加数据时将创建该数据的新副本,从而确保阅读器始终具有有效的(尽管可能已过期)数据集来显示。
正如javadoc所说,
This is ordinarily too costly, but may be more efficient than alternatives when traversal operations vastly outnumber mutations, and is useful when you cannot or don't want to synchronize traversals, yet need to preclude interference among concurrent threads.
Java消除了通常为解决该问题而引入的全部错误,使我能够专注于需要解决的实际问题。
一直都是InheritableThreadLocal !!!
这么多的机会来编写模糊的代码,而卷起绳索吊死自己的事情似乎永远不会用完。