Теги ‘java’

JAVA / Что же всё-таки будет в Java 7 — окончательный список

Нет комментариев »

Joe Darcy (лидер проекта из Sun) выложил окончательный список нововведений Java 7 (оригинал тут). Вот эти нововведения:



JAVA / Структура байт-кода виртуальной машины Java

Нет комментариев »

В последнее время на Хабре появились статьи которые затрагивают манипуляцию байт-кода. Что заставило меня опубликовать следую статью посвященную его структуре.



У платформы java имеется две особенности. Для обеспечения кроссплатформенности программа сначала компилируется в промежуточный язык низкого уровня — байт-код. Вторая особенность загрузка исполняемых классов происходит с помощью расширяемых classloader. Это механизм обеспечивает большую гибкость и позволяет модифицировать исполняемый код при загрузки, создавать и подгружать новые классы во время выполнения программы.



Такая техника широко применяется для реализации AOP, создания тестовых фреймворков, ORM. Особенно хочется отметить terracotta, продукт с красивой идеей кластеризации jvm и на всю катушку использующей модификации байт-кода. Эта заметка будет посвящена обзору структуры байт-кода, первой части этой сильной связки.


JAVA / Разбор выражений, bytecode-way

Нет комментариев »

Приходилось ли вам разбирать выражение?



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



Написав вчера о cglib, я заметил в документации главу о модификации байт-кода. И само собой напрашивается вопрос, а можно ли в runtime заставить класс выполнять, то что очень хочется, а не то что хочет класс?


JAVA / [Перевод] Делаем reflection быстрой как прямые вызовы

Нет комментариев »

Большинство программистов знают о reflection, которая (она — рефлексия) упрощает добавление динамических возможностей в статические языки, такие как Java/C#. Однако reflection упрекают в том, что вызовы работают очень медленно — до 500 раз медленнее. Все же это можно c легкостью исправить — покажем в этой статье как сделать reflection-вызов таким же быстрым, как и прямой (direct) вызов.


JAVA / HTTP сервер за 15 минут

Нет комментариев »

Задача



За минимальное время написать HTTP сервер, который после запуска сможет корректно ответить браузеру и отдать простую HTML страничку (минимальное время, чтобы кода было мало, чтобы новичку вникать было проще).

У меня это заняло около 15 минут. Сервер вроде справляется с поставленной задачей.



Товарищам минусовальщикам: я не понтуюсь красотой кода, или скоростью написания (можно лучше и быстрее), просто я был бы рад если бы мне показывали такие примеры, когда я начинал изучать программирование. Суть примера — показать что такое Socket, Server Socket, Stream, и Thread, а не то как правильно эксепшены ловить и хедера распарсивать (или что вам не понравилось?).



JAVA / [Ссылка] Опять Java vs. C++

Нет комментариев »

Клифф Клик (Cliff Click), признанный авторитет в области Java-платформ, вчера опубликовал очередную заметку в своём блоге. Я было взялся её переводить, но оказалось, что заметка постоянно пополняется новыми исправлениями и комментами. Поэтому сейчас переводить бесмыссленно — даю просто ссылку.


Множественные уязвимости в IBM Java 6 (3)

Нет комментариев »

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


JAVA / Знакомство с Bean Validation API

Нет комментариев »

Не так давно в Яве не существовало стандарта, описывающего способ валидации данных. Каждый выкручивался как мог, писались (и пишутся) свои поделки а так же используются некоторые возможности широко распространенных сервисов как Spring или Hibernate. Наибольшей проблемой было то, что валидация могла быть реализована отдельно от предметной модели и быть редунданто расбросанной по фронт- и бэкэнду. Теперь, при помощи стандарта JSR 303: Bean Validation (практически это явлается стандартизированным валидатором Hibernate) становится возможным следовать принципу «Don’t Repeat Yourself»: объявлять ограничения для данных прямо в предметной модели и валидировать данные где угодно, хоть на сервере, хоть в десктопном приложении.



JAVA / Continuous integration and code metrics

Нет комментариев »

В этой статье рассматривается настройка continuous integration процесса с метриками кода. Предполагается работа с java кодом и библиотеками: junit, cobertura, findbugs. В качестве системы сборки используем ant, а сам процесс будет управляться из cruise control. В качестве scm будет немного git’а.



Что мы получим в итоге? Ява проект с ant’овским сценарием сборки. Итогом сборки будет откомпилированный проект и набор метрик: отчеты по junit тестам, процент покрытия кода тестами и отчет о потенциальных ошибках. В дополнение, весь процесс сборки будет проходить ежедневно в автоматическом режиме и вся история метрик сохраняется для групповых отчетов.

image


JAVA / Перевод Самые глупые вещи, которые я сделал будучи программистом

Нет комментариев »

Оригинальное название статьи: «The * stupidest things I’ve done in my programming job», поэтому перевод названия статьи не очень точен, однако то, что автор имел ввиду под "*" мы опустим — мы ведь не знаем наверняка :)



Я больше не стыжусь своих грешков, так что — вперед:


1. ORM


Глупость



Создал собственную ORM (Object Relational Mapping) библиотеку


Следствие



Неразбериха в проекте после двух лет поддержки, в следствие хаков-обходов моей ORM библиотеки для запуска прямых SQL запросов


Что я должен был сделать



Использовать Hibernate, iBATIS, Cayenne или нечто подобное.