Какая ваша любимая область Java API? - PullRequest
7 голосов
/ 19 сентября 2008

Мне любопытно узнать, что другие программисты на Java считают своей любимой частью языка, почему они так думают и почему другие программисты должны также хотеть иметь глубокие знания этого. Я ищу такие причины, как простота, производительность и т. Д. Спасибо.

Ответы [ 15 ]

22 голосов
/ 19 сентября 2008

Мой любимый Java API - это Collections Framework . Я все время использую его вместо того, чтобы катить свои собственные реализации, и это очень приятно и просто в использовании. Он состоит из нескольких полезных и взаимозаменяемые реализации высокопроизводительных структур данных и алгоритмов, а также несколько удобных методов для оборачивания дополнительной функциональности вокруг них.

Учебник Джоша Блоха можно найти здесь: http://java.sun.com/docs/books/tutorial/collections/index.html

10 голосов
/ 19 сентября 2008

Моя любимая часть API определенно java.lang . Этот класс называется String, что позволяет легко манипулировать массивами символов. Любой программист, который серьезно относится к написанию хорошего Java-кода, должен это проверить.

9 голосов
/ 21 сентября 2008

java.util.concurrent имеет решающее значение для моей жизни. Мы много занимаемся многоядерным программированием, и идея попытаться реализовать все наши задачи с использованием старых потоков в стиле Raw просто заставляет меня чувствовать себя плохо.

Хорошим примером того, как пакет параллелизма действительно облегчает нашу жизнь, является пул специализированных структур данных, которые он предоставляет. Мой личный фаворит - CopyOnWriteArrayList . Мы часто используем их в ситуациях, когда задача дисплея считывает данные из кеша для обновления экрана, а другая задача - получать информацию из сети для обновления кеша. Обычно это приглашение к коллизиям, ConcurrentModificationExceptions и аналогичным ужасам. Используя CopyOnWriteArrayList, задача записи создаст новую копию данных, если ей потребуется добавить данные, таким образом гарантируя, что читатель всегда будет иметь для отображения действительные (хотя потенциально устаревшие) данные.

Как говорит Javadoc,

Обычно это слишком дорого, но может быть более эффективным, чем альтернативы когда операции обхода значительно превосходят по численности мутации и полезны когда ты не можешь или не хочешь синхронизировать обходы, но нужно исключить вмешательство среди одновременных резьб.

Java устраняет целые классы ошибок, которые я обычно вносил бы для решения этой проблемы, позволяя мне сосредоточиться на реальных проблемах, которые мне нужно решить.

4 голосов
/ 19 сентября 2008

Определенно рамки коллекций. Он используется постоянно, независимо от того, используете ли вы серверную Java или клиентскую часть, графическую или нет. Это просто в использовании. Большинство классов структуры данных имеют как неуниверсальную, так и универсальную версию (лучше всего использовать вторую, но есть устаревший код, который интенсивно использует первый), но они в значительной степени идентичны с точки зрения API, отличного от параметров класса. В .NET две версии могут иметь разные имена / API, и это может привести к путанице. Мне также нравится, что в Java Collections Framework алгоритмы используются как статические методы (например, Collections.sort (collectionVar)), а не как методы экземпляра. В .NET они используют методы экземпляров, и по какой-то причине не каждая структура данных имеет своего рода ... Framework коллекций также очень богат, и вы можете найти как простые, так и специализированные структуры данных (например, LinkedHashMap, который сохраняет порядок вставки).

Один недостаток, который я слышал, это то, что фреймворк не работает хорошо, и некоторые люди пишут свои собственные. Я не могу это проверить, так как не занимаюсь вопросами, связанными с производительностью.

3 голосов
/ 20 сентября 2008

Streams. Потоки в Java гораздо легче понять и реализовать, чем их аналоги в C ++ (мнение), и, как правило, легко увидеть, основываясь на именах потоков, которые поставляются с API, то, что поток собирается сделать для вас.

3 голосов
/ 20 сентября 2008

Отражение. Некоторые из них находятся в java.lang.reflect , а некоторые в java.lang (в основном Class и ClassLoader).

3 голосов
/ 19 сентября 2008

javax.naming

http://java.sun.com/javase/6/docs/api/javax/naming/package-summary.html

Java - отличная технология интеграции систем благодаря своей мобильности, а JNDI хорошо абстрагируется от сложностей, связанных с установлением первого контакта с удаленной системой.

2 голосов
/ 22 октября 2012

Пока что API-пакет java.util.regex - мой любимый, потому что он не позволял мне изобретать колесо так много раз, когда речь шла о поиске и использовании фрагментов строк для различных целей.

2 голосов
/ 19 сентября 2008

Я большой поклонник JPA в Java EE . Это уменьшило объем работы, которую я должен выполнять как для больших приложений (которые будут использовать EJB), так и для небольших приложений.

Второй момент - JAAS, API безопасности, вот ссылка на Java SE JAAS : http://java.sun.com/javase/technologies/security/

1 голос
/ 21 сентября 2008

Вспоминая мои Java-дни, единственным наиболее интересным API для использования был java.util.concurrent , просто потому, что он предоставляет хорошо продуманные и простые в использовании строительные блоки для параллельной обработки .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...