Статьи

Забудьте о Гуаве: 5 библиотек Google, которые должны знать Java-разработчики

Каковы некоторые из самых полезных, но еще неизвестных библиотек Google Java?

Если бы мы остановили кого-то во время интенсивного хакатона и попросили бы ее назвать популярную библиотеку Google Java, ответ, вероятно, был бы Guava. Это неудивительно, поскольку основное внимание уделяется повышению производительности труда разработчиков. Но как насчет других библиотек Google? У вас была возможность проверить их?

В следующем посте мы рассмотрим некоторые интересные библиотеки Java от Google и расскажем, что вы можете с ними делать.

Добавление еще одной библиотеки в микс

Во-первых, давайте прояснимся: мы любим гуаву. Он содержит некоторые основные библиотеки Google для проектов на основе Java, такие как коллекции, кэширование, общие аннотации, ввод-вывод и другие. Они полезны не только для разработчиков Google, но и для более широкого сообщества.

Хотя это не единственная классная вещь, которая вышла из Google. Мы не говорим об автомобилях без водителя, волокне Google или проекте Ara (и мы все еще ждем этого последнего) — мы говорим о большем количестве библиотек .

Хорошая новость заключается в том, что нет необходимости просматривать каждую доступную библиотеку, чтобы найти нужную, поскольку мы сделали это для вас. Мы выбрали 5 библиотек Google, которые могли бы сделать вашу жизнь проще и сделать код немного лучше. Проверь их:

1. Инъекция зависимости — Guice

Guice — это облегченная среда внедрения зависимостей (DI) для Java, выполняющая роль, аналогичную базовой библиотеке Spring Inversion of Control (IOC). Это почти так же популярно, как гуава . Если вы не знакомы с ним, Guice избавит вас от необходимости создавать фабрики и упростит использование «нового» в вашем коде. По словам самого Google, Guice @Inject — это новая новинка.

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

Классный фактор

Эта библиотека призвана упростить и ускорить разработку и отладку. Документация даже претендует на то, чтобы помочь вам лучше понять ваш код. Еще одна интересная функция, которую предлагает Guice, — генерировать полезные сообщения при возникновении ошибок, поэтому у вас будет представление о том, что произошло и как вы можете ее решить.

2. Статический анализ — подвержен ошибкам

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

Другими словами, этот инструмент поможет вам обнаружить ошибки до того, как они станут ошибками в работе и испортят ваше приложение.

Например, один из обнаруженных им шаблонов ошибок — CannotMockFinalClass, который указывает, что Mockito не может имитировать конечные классы:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import org.mockito.Mock;
import org.mockito.Mockito;
 
/**
 * Test for CannotMockFinalClass.
 */
@RunWith(JUnit4.class)
public class CannotMockFinalClassPositiveCases {
    static final class FinalClass {}
 
    // BUG: Diagnostic contains: Mockito cannot mock
    @Mock FinalClass impossible;
 
    public void method() {
        // BUG: Diagnostic contains: Mockito cannot mock
        FinalClass local = Mockito.mock(FinalClass.class);
    }
}

Классный фактор

На официальной странице библиотеки вы найдете список распространенных ошибок и предлагаемых исправлений. Это означает, что у каждой ошибки есть решение, о котором кто-то уже подумал, и вы можете легко реализовать его в своем собственном коде. Кстати, если вас интересуют распространенные производственные ошибки, ознакомьтесь с нашим анализом 10 лучших типов исключений в производстве .

3. Значимые ошибки — правда

Truth — это структура тестирования, созданная для того, чтобы ваши тесты и сообщения об ошибках были более читабельными и обнаруживаемыми. Он генерирует значимые сообщения об ошибках, которые сообщают о том, почему тесты не выполняются, и в то же время расширяем для новых типов объектов. О, и это идет с удивительной ключевой фразой «Мы сделали провал стратегией».

Вы можете использовать Truth вместо утверждений JUnit, FEST или классов соответствия Hamcrest, или просто использовать его так, как считаете нужным для своего кода. Он представляет вам тестовый глагол, который утверждает на предмет, значение или тестируемый объект.

Вы можете использовать Истину для того, чтобы объявить предположения в стиле JUnit (и пропустить тестирование при сбое), утверждения и исключения.

1
2
3
4
5
6
7
8
import static com.google.common.truth.Truth.assertThat;
 
Set < Foo > foo = ...;
assertThat(foo).isEmpty()
 
org.truth0.FailureStrategy$ThrowableAssertionError: Not true that is empty
at org.truth0.FailureStrategy.fail(FailureStrategy.java: 33)
    ...

4. Язык-Агностические протоколы — Kythe

Kythe предоставляет и поддерживает инструменты и стандарты для поощрения взаимодействия (обмена, обмена и использования информации между системами) между программами, которые манипулируют исходным кодом. Более простой способ объяснить это — сказать, что эта библиотека предоставляет экосистему для создания инструментов, работающих с исходным кодом.

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

Классный фактор

Kythe поставляется с богатым сообществом , которое ответит на любой ваш вопрос. Нужна помощь с Kythe на Python, JavaScript или Java? Хотите знать, как моделировать модули Python? Или вы просто хотите знать, как произносится Kythe ? Просто спросите сообщество.

5. Сериализация структурированных данных — Protobuf

Protobuf, библиотека, также известная как Protocol Buffers, является независимым от языка, независимым от платформы, расширяемым механизмом Google для сериализации структурированных данных. Если вы не уверены, что это значит, Google объясняет, что это похоже на XML, только меньше, быстрее и проще.

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

Классный фактор

Полное раскрытие приведено здесь: protobuf — одна из наших любимых библиотек в Takipi , и мы можем гарантировать, что она поможет вам сделать сложные элементы немного проще.

Мы кого-нибудь забыли?

Мы знаем, что вы думаете — так много библиотек и ни слова о GWT . GWT — это инструментарий разработки для браузерных приложений, позволяющий создавать высокопроизводительные веб-приложения, даже если JavaScript вам не подходит. Это в основном компилятор Java to JavaScript.

Эта бесплатная библиотека с открытым исходным кодом стала популярной благодаря множеству продуктов Google, которые ее использовали. В этот список вошли Google Inbox, AdWords, AdSense, Авиабилеты, Поиск отелей, Предложения, Кошелек и Blogger, все очень известные и мощные продукты, которые появились в Google.

Помимо Google, есть несколько известных компаний, использующих GWT, таких как Ruxit, Go Grid, Whirled и другие.

Дополнительные библиотеки Google

После комментария в твиттере мы решили добавить еще 2 полезные библиотеки, которые здесь не упоминались, спасибо @ joschi83 !

1. AutoValue — коллекция генераторов кода, которые автоматизируют генерацию повторяющегося кода Java.

2. GSON — популярная библиотека сериализации / десериализации Java, которая может конвертировать объекты Java в JSON и обратно.

Последние мысли

Существует множество библиотек Java, которые могут помочь вашему коду, сделать его умнее и проще в использовании. Все, что вам нужно сделать, это понять, что вы ищете, и посмотреть, как определенная библиотека может помочь.

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