Доклад Алексея Шепилева. JAVA Benchmarking

Было дело задумывался я померять производительность java приложения. Многие наверное задумывались, как бы замерить производительность какого-то кода, и многие (как и я) думали, что это достаточно просто. Вот вам крайне рекомендую посмотреть этот доклад. Рассматриваються очень интересные, и порой не очевидные ньюансы.



Java: распределенные вычисления

Просмотрел сейчас запись выступления Алексея Рагозина на встрече jug.ru от 12.12.13, интересные вещи рассказывает, не вольно поймал себя на мысли, что ищу варианты, чего бы распределенно посчитать. Кроме перебора забытого пароля на rar архив, ничего не придумалось.

В общем рекомендую к просмотру.

 

Спорим в твоем приложении есть утечки памяти?

Посмотрел доклад… с интересом. Суть в том, что какой бы ты не был крутой программист, но почти гарантированно в твоем софте есть утечки памяти. В 99% случаев это баги сторонних библиотек. В общем начинающим Java разработчикам обязательно к просмотру.



OpenJDK

Посмотрел доклад Артема Ананьева о OpenJDK.

Рассказывал он о том, что такое OpenJDK, чем отличается от Oracle JDK, как разрабатывается, как присоедениться к процессу разработки, и т.д.

В результате снес на домашнем компе Oracle JDK (т.к. есть сложности с обновлением), и поставил OpenJDK. Как оказалось разницы почти никакой, хотя я был почему то уверен, что OpenJDK это полностью с нуля переписанная реализация JDK от Oracle. В общем, есть смысл посмотреть.



Переменные в скриплетах и jstl

Хороший пример поясняющий, как получить доступ к переменной JSP из скриплета, и наоборот:

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<c:set var="myTest" value="testValue"/>
#1:<c:out value="${myTest}" />
#2:<%=pageContext.getAttribute("myTest") %>

<c:set var="anotherTest" value="anotherValue" scope="request"/>
#1:<c:out value="${anotherTest}" />
#2:<%=request.getAttribute("anotherTest") %>

JSP и include

В jsp есть два вида include.
Первый — <jsp:include page=»uri»/>
Второй — <%@include file=»uri»%>

В книгах и в документации много разного понаписано по этому поводу, чаще всего пишут, что тегом подключается статическая страница, а директивой — страница с jsp. Но это фигня.

Вот самое лучшее объяснение, которое я нашел:

Перед выполнением, jsp страницы компилируются контейнером. После компиляции директивы вида:

<@include file="reuse.html">

при дезассемблировании, получим:

out.write("<html>\r\n");
out.write("    <head>\r\n");
out.write("        <title>reusable</title>\r\n");
out.write("        <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n");
out.write("    </head>\r\n");
out.write("    <body>\r\n");
out.write("        <img src=\"candle.gif\" height=\"100\" width=\"50\"/> <br />\r\n");
out.write("        <p><b>As the candle burns,so do I</b></p>\r\n");
out.write("    </body>\r\n");
out.write("</html>\r\n");

Читать

Как скомпилировать Java в нативный бинарник? (.exe например)

Любой Java программист когда — либо думал об этом.

Мне известно несколько способов.

Во первых есть проприетарные утилиты для таких преобразований.

Во вторых есть gcj. Не знаю, на сколько он работоспособен в данный момент, но для консольных программ вполне должен подойти.

А еще есть oss.readytalk.com/avian/, сейчас читал на хабре статью, о том, как без помощи магии и бубна, этой прогой, можно собрать бинарник, который будет работать на компе не имеющем jre, под любой ОС.

При этом файл будет небольшого размера (порядка нескольких мегабайт).

http://habrahabr.ru/post/176237/

Осторожно, очень много букаф!

Sun Java в Ubuntu 12.04

Из идеологических соображений (или из-за проблем с лицензированием), в большинстве дистрибутивов выпилили сановскую джаву, а вместо нее в репах лежит open source альтернатива. Для большинства задач ее хватает…. Так говорят. Мне же видимо везет, и у меня оно глючит и тупит.

В принципе очевидно, что проприетарный дистр лучше отлажен, и шустрее работает.

Но, ставить jre из оракловского бинарника, и потом заставлять его работать и удовлетворять зависимости пакетного менеджера — боль.

К счастью один добрый человек, сделал скрипт, позволябщий делать из бинарников оригинальной джавы пакеты для вашего дистра (только Ubuntu). Для этого достаточно скачать скрипт отсюда: https://github.com/flexiondotorg/oab-java6

а затем запустить его. После того, как он отработает, он создаст вам репозиторий с собранными пакетами, которые можно будет поставить привычным:

apt-get install oracle-java7-jre oracle-java7-jdk

ВНИМАНИЕ! На сегодняшний день скрипт не может собрать 6ю версию, т.к. оракл переложил ее в раздел для разработчиков, доступный только после авторизации. Поэтому скрипт нужно запускать с ключем -7, чтобы собиралась 7я версия, или качать 6ю версию ручками, и чуток обрабатывать напильником исходник скрипта. Благо — ничего сложного там нет.

 

Система выбора альтернатив в Debian based дистрах

Пока не забыл, запишу тут. Если нужно поставить какой то софт не из репозитория, и аналог этой программы уже есть в системе, то как правило возникает вопрос: «как это сделать не перезаписывая оригинальный файл, и что б при обновлении системы мои изменения не накрылись?»

Пример приведу на установке Oracle jre в Ubuntu 12.04. Читать

Профилактика SQL-инъекций

SQL-инъекции (также известные как «Нарушение в целостности структуры SQL-запроса») являются одними из самых распространённых и наиболее опасных уязвимостей в вопросе безопасности. SQL-инъекции очень опасны, потому что они открывают двери хакерам в вашу систему через веб-интерфейс, и позволяют получить неограниченный доступ: например удалять таблицы, изменять базу данных, и даже получить доступ к внутренней корпоративной сети. SQL-инъекции это чисто программная ошибка, и не имеет ничего общего с хост-провайдером. Итак, вы занимались поисками безопасного JSP хостинга, PHP хостинга, или любого другого, вы должны знать, что за профилактику SQL-инъекций несут ответственность только разработчики, а не хост провайдер.

Читать