Рубрика «java» - 288

Сегодня всех любителей IDE NetBeans порадовали новым релизом, содержащим довольно много интересных и очень полезных новшеств.

Пока новая версия IDE в состоянии Beta (релизную обещают в июне), но, как говорят сами разработчики, зачем ждать, если новыми возможностями можно воспользоваться уже сегодня?

Наиболее значимые изменения включают в себя поддержку различных PHP фреймворков, улучшенную поддержку Groovy, интеграцию Scene Builder в JavaFX, а также множество других улучшений в Java EE, Maven, C/C+ + и платформы NetBeans. Назовем наиболее интересные из них.
Читать полностью »

О грустном

Сидел я вчера на очередном интервью, грустил, что javax в меня какашками кидается, и слушал печальную историю соискателя о том, как он мучался пытаясь прикрутить сериализацию в JSON к модели на Java не имея ее исходников. От вида его попыток настроение мое не улучшилось.
Мы попробуем лучше, потому что, в отличие от него, мы знаем про Groovy.
Этот пост является более-менее продолжением вчерашнего. Им хотелось бы убить мешок зайцев:

  1. Показать реальный пример мета-программирования на Groovy
  2. Показать немного более навороченный способ работы с мета-классами
  3. Показать работу с json-lib в Groovy
  4. Рассказать про dependency management для бедных

Читать полностью »

Stringer Java Obfuscation Toolkit - Android ProtectionУважаемое Хабр-сообщество, хотел бы рассказать об одном из продуктов, который мы разрабатываем — Stringer Java Obfuscation Toolkit (https://jfxstore.com/stringer). Думаю многим Android и Java-разработчикам будет интересно, особенно, в свете подобных публикаций: habrahabr.ru/post/141522/.

Сразу скажу, что решение коммерческое, чтобы сэкономить кому-то, из читающих этот пост, время.

За прошлый, почти полный, год, мы сделали довольно много интересных вещей:

В восемнадцатом выпуске «правильного подкаста для IT-шников» наш специальный корреспондент Абашев Алексей встретился с Антоном Архиповым.
Время: 17 апреля 2012
Место: JavaOne Russia, Российская Академия Наук Читать полностью »

Вместо посвящения

Всегда… Нет. Никогда не выходи в пургу пиши такой код ни для чего, кроме подобных забав.
image
Гийом — lead разработки языка Groovy

Reflection во зло

Один мой друг — большой любитель головоломок. Всяких, и программистких в том числе. Вот его последняя забава:
Напишите нужный код в static initializer, чтобы assert перестал падать:

public class Test {
 static {
//Write some code here
 }

public static void main(String[] args) {
 Integer a = 20;
 Integer b = 20;
 assert (a + b == 60);
 }
}

Если вы решите попробовать, не забудьте включить assertions (флагом -ea).
Дальше будет решение и кое какие рассуждения на тему, так что если вы уже справились, или вам влом -смело под кат.
Читать полностью »

Достаточно часто на практике возникает необходимость воспользоваться такими конструкциями как «пара» (Pair<First, Second>), менее часто «тринарными» объектами (Triplet<First, Second, Third>) и более длинными цепочками ассоциированных объектов. В связи с чем всегда удивлялся, почему в JDK (в java.lang.* или java.util.*) до настоящего момента нет стандартной Pair<First, Second> или более длинных конструкций. Думаю многие программисты практикующие на Java имеют свою реализацию «пары». Не исключением являюсь и я.

И вот в очередной раз наткнувшись на необходимость работать с большим количеством различных кортежей, решил взяться за эту проблему системно. Придумал название проекту, определил цели и после экспериментов, занявших некоторое время, выложил код ( git://github.com/telesik/rumba.git ).

Чего хотелось достичь:

  • Необходима удобная конструкция (назовем ее кортеж) для ассоциации нескольких объектов, типы которых определялись бы из позиции в полученном кортеже;
  • Кортеж должен быть неограниченным по длине и типу;
  • Типы элементов должны быть относительно контролируемым (как минимум ограничен дженериками);
  • Описание структуры кортежа должно быть простым;

Читать полностью »

На сайте Groklaw публикуется текстовая трансляция судебных слушаний Oracle против Google, где речь идёт о возмещении ущерба $150 тыс. за «воровство» для Android функции rangeCheck и тестовых файлов. В обсуждении встречаются интересные моменты. Например, вчера судья Алсуп, ведущий это дело, вступил в небольшую перепалку с адвокатом Дэвидом Бойзом, который представляет интересы Oracle: см. запись разговора.

Oracle: Вопрос не в том, насколько велик ущерб. Вопрос в том, можно ли закрыть глаза на коммерческую выгоду нарушителя исходя из того, что объём нарушений мал.

Кроме того, для меня не ясно, что справедливо сравнение девяти строк кода и 15 миллионов, потому что из них 10 миллионов составляет ядро Linux. Но всё равно, девять строк — это небольшой процент. Тестовые файлы гораздо больше, но они не присутствуют, по крайней мере, в текущей версии Android.

Читать полностью »

Наш проект мы пишем с индусами.

Общую архитектуру я задал как архитектор проекта — Java, Spring и т.д.
Но в тех областях, в которых им надо было писать они сами решали что и как будет.
А привыкли они всё делать на C/C++.

В итоге родился такой монстр:

У нашей программы есть command line клиент.
Он работает с командами и скриптами на Tcl (потому что так привыкли клиенты).
Используется native Tcl Interpreter (а не JTcl) (потому что так решили наши индусы).
Команды реализованы на Java, но часть команд обращается к коду на C++ (legacy code)
Однако же система сообщений об ошибках и предупреждениях реализована на Java.
Индусы писали используя JNI, а я связь Java с С делал на JNA

Как выглядит работа команды набранной в коммандной строке?

Читать полностью »

C радостью сообщаем, что с 16 мая 2012 года российские разработчики могут испытать коммерческую версию облачной платформы Jelastic. Этот сервис предоставляет хостинг-провайдер Русоникс.
За 8 месяцев существования на рынке PaaS Jelastic привлек более 16000 пользователей, 12% из которых – российские разработчики.
image
Давайте более детально рассмотрим нашу модель оплаты. Пользуясь услугами Jelastic, пользователь платит только за потребленные ресурсы, т.е. память, процессорную мощность и storage. Jelastic – первая платформа, оплата услуг которой осуществляется по факту использования ресурсов. Как известно, приложение не всегда использует одинаковое количество ресурсов. Благодаря функции автоматического вертикального масштабирования, изменяется размер контейнера под приложение. Соответственно пользователю не нужно переплачивать за зарезервированные ресурсы, которые не используются, как в случае с другими PaaS. Читать полностью »

Все привет! Редакция подкаста «Разбор Полетов» рада представить Вам очередной 17-й выпуск, в котором мы расскажем Вам:


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js