{"id":2175,"url":"\/distributions\/2175\/click?bit=1&hash=803b6e1bcbd9dfc4ba9456fda887a878c80d24df8d3a575913b14876e18923a5","title":"TJ \u0437\u0430\u043a\u0440\u043e\u0435\u0442\u0441\u044f 10 \u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f \u2014\u00a0\u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u0430\u043d\u043e\u043d\u0441 \u0441 \u0434\u0435\u0442\u0430\u043b\u044f\u043c\u0438","buttonText":"\u0427\u0438\u0442\u0430\u0442\u044c","imageUuid":"d1d355d8-93a3-5140-aeae-14b03046b760","isPaidAndBannersEnabled":false}

Java SDK для TJ, VC, и DTF

Давайте сделаем Комитет передовой IT-компанией.

Картинка, чтобы пост заметили в ленте

Языки со строгой статической типизацией, такие как Java, имеют один большой минус: они очень многословны. А это означает, чтобы сделать простейшие действия, например, запрос к апи или десериализацию данных, потребуется написать ну очень большое количество рутинного кода. Чтобы показать разницу, посмотрим, как сделать один и тот же запрос на Python (динамическая типизация) и Java.

Запрос на Python:

# sending get request and saving the response as response object r = requests.get(url = URL, params = PARAMS) # extracting data in json format user = r.json() # access field of Json object print(user.id)

Три строчки! Неплохо. Теперь попробуем сделать то же самое на Java:

URL obj = new URL(url); HttpURLConnection con = (HttpURLConnection) obj.openConnection(); // optional default is GET con.setRequestMethod("GET"); //add request header con.setRequestProperty("User-Agent", USER_AGENT); BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); String json = response.toString(); User user = new Gson().fromJson(json, User.class); // access field of object System.out.println(user.getId());

Разница очевидна.

Разумеется, для Java есть библиотеки, которые сильно упрощают жизнь при создании подобных http-запросов, но всё ещё остаётся много работы, которую придётся делать самому: написание DTO-классов, обработка ошибок, парсинг Json-ответов...

Вот я и сделал небольшую библиотечку, которую легко использовать, чтобы ддосить наш любимый комитет. Например, попробуем достать статью с TJ:

TJApiClient client = new TJApiClient("token"); Entry entry = client.entries().get().by("93120").execute(); // проверим, что все ок Assert.assertEquals("93120", entry.getId()); Assert.assertEquals("Женя Кузьмин", entry.getAuthor().getName())

Две строчки кода, чтобы сделать запрос и получить всю информацию по статье. Круто, да?

Но есть одно но: я ******** [устал] делать библиотеку один. Поэтому в SDK пока что сделано около 90% методов, в первую очередь, самые главные. И мне нужна ваша, Java-программисты, помощь. Буду рад вашим pull-реквестам, а также помощи с тестированием, поиском багов, предложениям и т. д.

И еще: я прошу официального разрешения и помощи программистов с Комитета. Я бы очень хотел, чтобы библиотека жила и была доступна Java-девелоперам со всего мира, а для этого её нужно запушить в Maven-репозиторий. Я знаю, как это сделать, но без вашей помощи не смогу. Если вам это интересно — пишите в комментариях.

0
40 комментариев
Написать комментарий...
Закомплексованная Душа

Тут нужна картинка с петухами

Ответить
Развернуть ветку
Уникальный теркин30см
Ответить
Развернуть ветку
Закомплексованная Душа

Именно она, спасибо

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Геологический фитиль

Джавой ещё кто-то, кроме андроид-разработчиков, пользуется?

Ответить
Развернуть ветку
Тупой череп

Комментарий недоступен

Ответить
Развернуть ветку
Геологический фитиль

Ладно-ладно. Разработчикам для бизнеса (забыл, каким словом они обзываются) тоже можно

Ответить
Развернуть ветку
Fire K

Энтерпрайз

Ответить
Развернуть ветку
Геологический фитиль

Точно! Я с утра плохо выражаю свои мысли.

Ответить
Развернуть ветку
Солидный томагавк_два

Java несколько лет подряд держится на первом месте в рейтингах по популярности.

Ответить
Развернуть ветку
Николай Кокоулин

Был удивлен, решил найти пруфы, не нашел. На первом месте в среднем богомерзский JS и чуть менее богомерзкий питон. Ява где-то на 3-5 месте возле ПХП, Шарпа, и плюсов

Ответить
Развернуть ветку
Солидный томагавк_два

Ну разные источники говорят разное, дальше 3 места не видел java. Да и вопрос вообще о том, что "java никто не пользуется". Но она очень популярна, даже если сейчас она и не занимает 1-ое место. Часто вижу как ссылаются на эту хрень https://www.tiobe.com/tiobe-index/

Ответить
Развернуть ветку
Николай Кокоулин

Я больше доверяю гитхабу, он говорит про второе место. И связывает это с тем что ява очень многословна и используется в огромных комерческих проектах. А по количеству проектов на уровне с питоном 2-3 место

Ответить
Развернуть ветку
Pavel Averyanov

Тут вопрос дискуссионный, что считать метрикой популярности. Питон и жс куда больше располагают к тому, чтобы выливать результаты на гитхаб. Жаба дерижтся за счет разнообразности, и мобилки и десктоп и прости Гошподи жаба-апплеты, вряд ли можно назвать прогера, который хоть где-нить с ней не сталкивался. А еще океан энтерпрайз-говна, которое на гитхаб грузить особо никто не будет.

Ответить
Развернуть ветку
Геологический фитиль

Среди кого и по каким критериям?

Ответить
Развернуть ветку
Солидный томагавк_два

Среди других языков, по популярности

Ответить
Развернуть ветку
Геологический фитиль

Думаю, по запросам в гугле на территории бывшего СССР более популярен 1С

Ответить
Развернуть ветку
Знаменитый томагавк_два
Ответить
Развернуть ветку
Солидный томагавк_два
Ответить
Развернуть ветку
Знаменитый томагавк_два
количество разработчиков в определенной сфере, доступность курсов по конкретным языкам, решения, которые позволяют расширить возможности языка. Ну а для построения финального рейтинга авторы используют поисковые системы, включая Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube и Baidu
Стоит отметить, что этот рейтинг ни в коем случае нельзя использовать для анализа качества языка. Он лишь представляет собой приблизительную оценку популярности и востребованности конкретных языков программирования во всем мире.

По сути, если в языке мало чего понятно, и люди генерируют кучу курсов и вопросов в stackoverflow, то индекс будет высоким.

Ответить
Развернуть ветку
Солидный томагавк_два

Ну это уже холивар. Про какой-нибудь Python можно сказать что его популярность выше из-за низкого порога входа. Поэтому огромное количество гуглений "Python Hello World" выбивает его в некоторых рейтингах на первое место. Спорить нет смысла, но я уверен в одном - java очень популярна.

Еще доля java в разработке будет падать (и падает уже), из-за того, что есть Groovy & Kotlin, которые по сути своей та же java, только с большим количеством сахара (и оба этих языка совместимы в обе стороны с java)

Ответить
Развернуть ветку
NiemandDa

Настолько смешно, что аж нет

Ответить
Развернуть ветку
Знаменитый томагавк_два

что странно, так как у них теперь есть Котлин.

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Солидный томагавк_два

я к этому готов

Ответить
Развернуть ветку
Сменю ка имя на всякий случай

А вообще круто, что ты этим занялся. Обязательно на неделе посмотрю. Респект всем, кто опенсорсит.

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Солидный томагавк_два

Kotlin не таблетка от всех болячек.

Особенно когда дело касается поддержки новых версий Java, которые сейчас чуть ли ни каждые полгода выходят.

Ответить
Развернуть ветку
Классный Никита

Берем https://cmtt-ru.github.io/osnova-api/api.yaml
Берем https://github.com/swagger-api/swagger-codegen
Генерим клиента
...
Profit

Ответить
Развернуть ветку
Солидный томагавк_два

Спасибо, буду знать об этой штуке.

Сгенерил проект на java, на kotlin не смог (хотя написано, что поддерживается). Качество кода плохое) Но наверное так со многими генераторами чего-либо

Ответить
Развернуть ветку
Классный Никита

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

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Правильный самолет

А какая помощь нужна от нас? Там платная публикация?

Ответить
Развернуть ветку
Солидный томагавк_два

Нет, не платная. Т.к. я буду выкладывать артифакт (собранный SDK) под ru.cmtt, то меня попросят подтвердить, что ru.cmtt согласен с публикацией. Для этого они скорее всего временно попросят вас добавить какую-нибудь dns запись или что-то в этом роде

Ответить
Развернуть ветку
Правильный самолет

Предлагаю поменять название пакета, так как он не официальный. Думаю, мы не рискнём сторонний SDK под своим именем публиковать.

Ответить
Развернуть ветку
Солидный томагавк_два

Да, это без проблем

Ответить
Развернуть ветку
Сменю ка имя на всякий случай

Не android java разработчики, а у вас не принято на любой чих, связанный с rest, использовать retrofit?

Ответить
Развернуть ветку
Солидный томагавк_два

Да и в обычной java есть какой-нибудь Unirest (кстати под капотом юзаю как раз эту либу). Но, как я и писал выше в статье, все равно остается много возни и рутинного кода.

Ответить
Развернуть ветку
Сменю ка имя на всякий случай

Первое, на что обратил внимание - нехватка информации о том, что же всё-таки за 10%, которые не сделаны.

Ответить
Развернуть ветку
Солидный томагавк_два

Ну это да. Я если честно не очень умею вести open source проекты)

Ответить
Развернуть ветку
Читать все 40 комментариев
null