Возвращение с Objective C на Java

После трех лет программирования на Objective C я уже несколько месяцев на своей текущей работе программирую опять на Java. Поначалу я думал, что возвращение к Java для меня пройдет легко и просто. Тем более, что Java здесь используется свежая, восьмая. Но на деле все оказалось не так хорошо. С какими сложностями я столкнулся, под катом.

Continue reading Возвращение с Objective C на Java

Поем вместе!

Весна и все такое :)) петь хочется!

Это Java! http://www.youtube.com/watch?v=iw-p3EBEGlA Ща, пацаны, гарбадж коллектор мусор соберет! Рэп.

Java Life! http://www.youtube.com/watch?v=b-Cr0EWwaTk. Тоже рэп.

А дальше классика. Beatles.

Write in C! http://www.youtube.com/watch?v=XHosLhPEN3k

Yesterday (backup version). http://www.youtube.com/watch?v=l7-6m2cE6JM

Слушайте хорошие песни. Программируйте на любимом языке, но не забывайте про бэкапы, любовь и весну! :))

Начальная настройка IntelliJ IDEA для работы с несколькими JDK

В предыдущей статье я рассказал, как можно установить несколько разных версий JDK на linux. В этой статье я расскажу, как сконфигурировать IntelliJ IDEA на работу с несколькими версиями JDK.

Continue reading Начальная настройка IntelliJ IDEA для работы с несколькими JDK

Installing JDKs on Ubuntu for developers

Поскольку примерно полтора года тому назад Oracle отозвала DLJ GNU/Linux дистрибутивы  потеряли возможность включать версию Java от Sun/Oracle. Только OpenJDK. Почему это проблема я уже писал раньше.

К сожалению, OpenJDK не всегда устраивает. Есть некоторые нюансы. Например, любимая мной среда раработки IntelliJ IDEA, по прежнему, рекомендует использовать Oracle JRE для своей работы. Что на самом деле странно, особенно учитывая тот факт, что Oracle Java 7
построена на основе кодовой базы OpenJDK, а не Sun.

И вот недавно мне, как разработчику, пришлось столкнуться с тем, что мне потребовалось на одном компьютере иметь сразу 5 вариантов JDK. Под катом как это можно сделать максимально быстро.

Continue reading Installing JDKs on Ubuntu for developers

Про отмену DLJ

Чуть более 3-х месяцв тому назад компания Oracle сделал очень неприятный шаг – отменила лицензию DLJ. Пользователи Windows ничего не заметили – для них ничего не изменилось. И даже не поняли, что произошло. И не поняли, почему Linux мир так возмущается этим фактом. Ну действительно, казалось-бы, что изменилось? Ведь компания Oracle не запретила качать java с сайта разработчика и использовать ее. Но так могут говорить только пользователи Windows. В том числе и Windows админы. Ибо до появления W8, у них все равно нет других вариантов, кроме как пойти на сайт производителя ПО, скачать дистрибутив и установить его.

В чем же дело?

Continue reading Про отмену DLJ

Jenkins, ant, junit – взрывная смесь. Для мозга :)

Неожиданно 🙂

Как-то заметили, что на сборочной машине под Jenkins тесты бегут в целом в два раза медленнее, чем на десктопе. А отдельные тесты на два порядка – 800мс в тех тестах, которые на десктопе выполняются за 8мс. Выяснил, что по какой-то причине на линюксе junit задача в ant стартуется, по умолчанию, в отдельной java машине каждый тест, хотя по всем докам на ant/junit следует, что если никаких опций не задавать, должен стартовать в той же машине, что ant. В результате работает дольше. Более того, мне так и не удалось найти комбинацию опций, чтобы она работала в той же машине, что ant. Возможно это связано с тем, что он стартуется из под Jenkins. Решили, что не страшно. Тестов пока мало и подождать 2 минуты против одной на прогон тестов – не страшно.

Причем, похоже, тесты стартуются паралельно, так как мы сегодня заметили, что один из двух тестов, слушавших один и тот же порт регулярно фэйлился. Решили, что надо принудительно заставить стартовать тест в отдельной java машине. Но запускать одну машину на весь пакет тестов. Сделали. Если раньше прогонялось 170+ тестов, то теперь стало 15. Куда что делось? Курение лога привело к тому, что отдельная java машина для старта junit получает путь к выходному файлу слегка в преобразованном виде. В частности, символ запятая (которая у нас использовалась в имени задачи для Jenkins) преобразуется в прямой слеш. Какие-то не очевидные причинно-следственные связи.

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