Архив метки: Java

Java: о позор на мои седины !

javaУвяз в изучении Python’a и как всегда моё восхищение вызвали slice’ы. Несколько дней ходил и цокал языком, какая красивая вещь ну и почему же ее нет в Java, пока не столкнулся с методом


List subList(int fromIndex, int toIndex);

интерфейса List.

Это же классический slice, возможно семантически не такой удобный как в Python или GoLang, но все же slice. Примеры реализации (кстати тривиальной реализации) можно увидеть здесь ArrayList

О позор мне, ухожу в дворники …

Отмечено

Java: удивительный трюк с Generic

javaНесколько раз встречался со следущей проблемой: есть вот такая с позволения сказать коллекция:

public class Foo {
private T[] data;
}

Как выделить память для массива data ?! Ну не вызывать же в самом деле new T[size] ?! Оказывается решение есть:

public class Foo {
private T[] data;
public Foo(){
data = (T[]) new Object[2];
}
}

Замечу, что (T[]) new Object[2] не должно выкинуть type cast exception так как компилятор «удаляет» тип Generic’a (т.н. type erasure) и оперирует данными только типа Object.

Отмечено

Как собрать свою JDK, без блекджека и автоматической сборки мусора

Интересерную статью «Как собрать свою JDK, без блекджека и автоматической сборки мусора» опубликовал ресурс Habrahabr.

Честно говоря ответы на вопрос «Зачем нужна JVM без сборщика мусора» мне показались малоубедительными,  а вот сам рассказ о сборке JVM из исходных кодов и о том, как все внутри устроенно был очень познователен, так что, настоятельно рекомендую!

Отмечено

From Java code to Java heap

Интересную статью опубликовал IBM Dev Centre «From Java code to Java heap»:

Although the subject of optimizing your application code’s memory usage isn’t new, it’s not one that is generally well understood. This article briefly covers the memory usage of a Java process, then digs in depth into the memory usage of the Java code that you write. Finally, it shows ways to make your application code more memory-efficient, particularly in the area of using Java collections such asHashMaps and ArrayLists.

Не скажу, что статья прямо «ах!», но интересные моменты я из нее подчеркнул. ну буду говорить какие , дабы не опозорится 😉

Поразило:

The effect of this on real applications is that the Java heap memory usage of an application that previously ran on a 32-bit Java runtime increases dramatically when it’s moved to a 64-bit Java runtime. Typically, the increase is on the order of 70 percent of the original heap size. For example, a Java application using 1GB of Java heap with the 32-bit Java runtime will typically use 1.7GB of Java heap with the 64-bit Java runtime.

И удивило что:

Тип java.lang.Long согласно приведенной статье выделяет только (!) 32 бита хранения 64 битного типа long. Как так ?!

Отмечено

Навстречу TDD

И так для тех кто встаёт на рельсы прогрессивного нонче Test Driven Development’a (TDD) парочка полезных ссылок:

  • JUnit Ant task   рассказывается о том, как подключить unit тесты в build скрипте
  • Cobertura Ant task рассказывается о том, как добавить Cobertura  build скрипт. Что такое Cobertura читаем здесь.
  • JUnit FAQ рассказывается о том, как сгенерить HTML отчет по unit тестам.

Ниже приведу парочку скриншотов: первый скриншот это HTML отчёт о запущенных unit тестах, второй — это отчёт о покрытии кода тестами

 

 

 

Отмечено

Transactions with file systems using XADisk

Интересную статью, описывающую возможность транзакционной работы с файловой системой опубликовали в IBM devWork . Особенно поразила возможность «remote transaction», то есть работать с удаленной файловой системой. Ну вообще читаем и обогощаемся знаниями …

 

Отмечено

Учи матчасть …

Ещё раз убеждась, что «мелочей» в программироваии не бывает. Ну казалось бы, ну чем может удивить класс java.math.BigDecimal и его друг-и-сортаник java.math.MathContext? Да ничем, уж если мы многопоточность освоили, неужто каие-то плаващие запятые нахрапом не осилим 🙂

DECIMAL32
public static final MathContext DECIMAL32
A MathContext object with a precision setting matching the IEEE 754R 
Decimal32 format, 7 digits, and a rounding mode of HALF_EVEN,
the IEEE 754R default.

 

Вот мне сирому-и-убогому фраза «precision matching 7 digits» читалось как «7 знаков после запятой», а вот «фиг-вам» ! Оказывается это 7 (!) значимых цифр в представлении BigDecimal. Другим словами 100.15076 — это в представлении BigDecimal уже 8(!) значимых цифр и DECIMAL32 контекст округлит 100.15076 до 100.1508, хотя я ожидал совсем другого поведения (ну вы сами понимаете, округлеия только после семи знаков после запятой 😉 )

Отмечено

Рекомендую к прочтению

Подобно тому как спортсмены держат себя в форме, участвуя в тех или иных соревнованиях, программисты тоже должны время от времени проходить «стресс-тесты». Ну конечно же я имею в виду прохождение интервью, правильное пройденное или даже «правильно» проваленное интервью это всегда работа на ошибками. И так, по результатам недавно пройденного собеседования настоятельно рекомендую прочитать или освежить в памяти «Design Principles and Design Patterns» Роберта Мартина и «JSR-133: JavaTM Memory Model and Thread Specification»

Отмечено

Java и Oracle, второе дыхание ?!

В предверии столь ожидаемого Java One 2011 все более актуальными становятся вопросы «помогла ли Oracle открыть второе дыхание Java ?!». В самом Oracle на этот вопрос отвечают утвердительно, некто Joseph D. Darcy опубликовал небольшой отчёт, снабдив конечно же его графиками, говорящий о том, что за последний год под крылом Oracle было внесено гораздо больше изменений в JDK7 нежели за все предыдущие 2 года, что проектом руководила Sun. И лишь благодаря неустанной заботе Oracle скорость и качество, с которой обновляется Java будет только рости.

p.s.  Красным цветом обозначены достижения (общее количество изменений в JDK) за период правления Oracle, фиолетовый соотвественно период руководства Sun.

Отмечено ,

Создатель Java покидает Google для участия в стартапе по разработке мореходных роботов

Как пишет Habrahabr:

Калифорнийская компания Liquid Robotics, занимающаяся разработкой роботизированных устройств для сбора и обработки информации о химико-физических свойствах морской воды, получила в свои ряды ценного сотрудника — бывшего инженера компании Sun Microsystems Джеймса Гослинга (James Gosling), который после поглощения Sun корпорацией Oracle работал в Google, и более известного как создатель языка Java.

В июне этого года Liquide Robotics получила значительное финансирование для своих разработок в размере 22$ млн и, как признается глава компании, Джеймс Гослинг необходим компании для разработки программного обеспечения, которое будет работать на их роботах:

Джеймс — один из лучших инженеров по разработке программ в индустрии, и он поможет нам улучшить знания о Мировом океане до неизвестных доселе масштабов.

p.s. Почти как создание боевых человекоподобных роботов 😀

Отмечено