Показаны сообщения с ярлыком java. Показать все сообщения
Показаны сообщения с ярлыком java. Показать все сообщения

суббота, 28 июля 2012 г.

Java Decompiler

Был замечательный проект JD (Java Decompiler). Но, судя по всему, автор забросил этот проект - обновлений нет уже очень давно, eclispe update site не работает...
Но нашелся добрый человек, который взялся поддержать и допилить этот проект - Mchr3k - JDEclipse-Realign (eclipse update site - http://mchr3k-eclipse.appspot.com/).

суббота, 26 февраля 2011 г.

Java в Ubuntu

В Ubuntu по умолчанию стоит OpenJDK, что для разработчика 'как то не привычно'. Xочется видить и пользовать Sun JDK.

1. Разрешаем использовать пакеты из зеркал партнеров. Для этого:
- открываем /etc/apt/sources.list и раскоментриуем вхождения для restricted и pertner зеркал.
- обновляем список пакетов sudo apt-get update

2. Устанавливаем желаемую JDK:
sudo apt-get install sun-java6-bin sun-java6-jdk sun-java6-jre

3. Добиваемся использования Sun JDK вместо OpenJDK. Тут есть варианты:
3.1. Прописать в настройках приложений (например Eclipse) пути именно к /usr/lib/jvm/java-6-sun и на этом успокоится.
3.2. Изменить 'JDK по умолчанию': sudo update-alternatives --config java. Логика подсказывает, что это наиболее безопастный способ, но другая логика подсказывает, что держать на винчестере 2 экземпляра джавы как то не правильно (расточительно). Поэтому....
3.3. Полное удалени неиспользуемых пакетов. Лучше делать через Sinaptic: грохнуть все пакеты, которые начинаются с openjdk. В результате освобождаем 100-200 МБ

среда, 8 декабря 2010 г.

Знакомство Runtime.exec()

Недавно захотелось запустить 'нечто' из Java приложения. В роли 'нечто' был 7Zip, в роли приложение было обычный SE класс с методом main().
Так вот, наткнулся на несколько интересный моментов.

Консольный ввод/вывод нового процесса

Итак, у java.lang.Process есть методы позволяющие работать с stdin, stdout и stderr потоками. Но выяснилось, что не все, что выводится на консоль, попадает в потоки stdout/stderr. Для примера можно запустить 7z.exe b. Есть предположение, что подобным образом ведут себя почти все Java приложения. Также есть предположение, что виной этому работа с буфером консоли 'напрямую' (насколько я понял из объяснений, например это вывод символа в заданную позицию консоли).

Скользкие моменты java.lang.Process

Очень понравилась статья When Runtime.exec() won't

среда, 24 ноября 2010 г.

Быстрое преобразование элемента в коллекцию

Часто встречаются методы, которые принимают коллекции в качестве параметра. Например:
public void print(Collection<string> strings){
  System.out.println("strings: "+ strings);
}

И часто необходимо вызвать эти методы имея всего один элемент. Обычно делают так:
List<string> strings = new ArrayList<string>();
strings.add(str);

print(strings);

но можно сделать и более короткую запись:
print(Collections.singletonList(str));

Из потенциальных неудобств можно отметить то, что Collections.singletonList() возвращает не модифицируемую коллекцию (Добавит элементы в нее уже не получится).

пятница, 22 октября 2010 г.

XML Parser Benchmarks

Когда я увидел название статей, то первой мыслю было: 'Забавно, но нафига это нужно (сравнивать производительность)?'. Первый же абзац заставил вспомнить про великую тучу XML-я, которую приходится пережевывать при работе с веб сервисами.

Ссылки: XML Parser Benchmarks: Part 1 и XML Parser Benchmarks: Part 2.

суббота, 9 октября 2010 г.

Трюки с оберточными типами

Недавно коллеги заставили меня немножечко удивиться офигеть. Началось с того, что прислали вот такой код, и спросили каким же будет результат:
Integer a1 = 123;
Integer a2 = 123;
boolean result = a1 == a2;

Наивно полагая, что я неплохо знаю основы языка, я конечно же ответил false.
Оказалось что во первых: "а вот и нифига не правильно (т.е. result == true)", a во вторых: "такой ответ не всегда такой".

четверг, 7 октября 2010 г.

Проблемы валидации XML c XInclude.

Eсть вот такое расширение для XML . Первое знакомство можно начать с этого ресурса.
Вкратце: есть возможность с помощью директивы <xi:include href="..." /> в произвольное место XML вставлять содержимое из другого файла.

Штуковина вроде бы прикольная, но при работе с ней возникают некоторые трудности:
  • XML редакторы не обрабатывают эту конструкцию должным образом.
  • Java SAX парсеры без специальной настройки тоже не обрабатывают эту директиву.

четверг, 16 сентября 2010 г.

вторник, 4 мая 2010 г.

Отличия 'get X' от 'find X'

Наблюдение из разряда 'мелочи, которые облегчают жизнь' (и способствуют взаимопониманию).
Есть методы для поиска/получения 'нечто' и есть 2 основных разновидности поведения в случае, если результат не найден (или не может быть получен):
  • вернуть null или пустую коллекцию
  • толкнуть исключение (например ItemNotFoud)

Впервые на эту разницу обратил внимание в ORM framework-ах. Ка правило, если это метод getXXX, то он либо возвращает результат либо толкает исключение, а если это findXXX, то он возвращает результат либо пустое значение (null или пустую коллекцию).

воскресенье, 7 марта 2010 г.

Подготовка состояния объекта после десериализауции

Не часто, но всетаки бывают, случаи, когда требуется сериализовать объект с несериализуемыми полями (ну например, у нас есть log4j логгер). В таких случаях возникают 2 проблемы: