Обновить
197.72

Java *

Объектно-ориентированный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Отличный Java MVC фреймворк — Play Framework

Время на прочтение2 мин
Охват и читатели50K
Добрый день!

Не так давно, мне потребовался инструмент или фреймворк, для того чтобы в краткие сроки, создать небольшой сайт — витрину. Особых требований не было. Собственно, сама витрина и простейшая админка, с возможностью подредактировать параметры публикуемого контента. Главным требованием была скорость. Нужно было сделать это все за 1-2 дня, с учетом необходимости верстки дизайна.
Читать дальше →

Apple объявляет Java для Mac OS X 10.6 устаревшей

Время на прочтение1 мин
Охват и читатели3.2K
Java для платформы Mac OS X 10.6 портированная Apple объявлена устаревшей.

Другими словами компания Apple больше не будет поддерживать Java для своей операционной системе на прежнем уровне и возможно ее удаление из поставки будущих версий Mac OS X.

Ситуацию ухудшает отсутствие официальной версии Java SE для Mac OS X от Oracle.
image

Amino — новый UI toolkit для десктопных Java приложений

Время на прочтение3 мин
Охват и читатели3.7K
image
Хочу представить вам Amino — графическую библиотеку и очень классный UI toolkit. Изначально библиотека разрабатывалась Leonardo Sketch как вспомогательная, но теперь становится самостоятельным продуктом. Сейчас Amino находится в состоянии ранней alpha-версии и является 100% open source Java библиотекой, которая обладает следующими преимуществами:

  • 2D/3D сценография на различных движках (Java2D, JOGL и многие другие);
  • множественные UI контролы, синование с помощью CSS;
  • разнообразные утилиты, для ускорения процесса разработки;
  • протестирован до мелочей;
  • является 100% бесплатной (BSD);
  • 100% Java, готова к использованию на различных можно использовать в разных языках, портированных под JVM (Groovy, JRuby, Jython, JavaScript, JavaFX Script и так далее)

Читать дальше →

Пятничная задача

Время на прочтение1 мин
Охват и читатели2.7K
Всех с пятницой!

Проверяем знания и своё внимание. Дан код на Java:

  1. public class Foo {
  2.  private static Foo instance = new Foo();
  3.  private static final int DELTA = 6;
  4.  private static int BASE = 7;
  5.  private int x;
  6.  private Foo() {
  7.   x = BASE + DELTA;
  8.  }
  9.  public static void main(String... argv) {
  10.   System.out.println(Foo.instance.x);
  11.  }
  12. }


Внимание вопрос! Что будет выведено? А главное — почему?

UPD Осторожно — в комментариях уже присутствует правильный ответ. Прошу провести тест в других ЯП и привести результаты в комментариях.

Покрытие кода для Maven проектов (code coverage)

Время на прочтение2 мин
Охват и читатели11K
Структура Java проектов с использованием Maven предполагает некоторое колличество Unit-тестов.
Но одних лишь тестов мало, хочется иметь более полную информацию насколько наши тесты охватывают код.

Для этих целей есть ряд библиотек из которых я использую Emma (офф. сайт).
Читать дальше →

Java как язык для параллельных вычислений. Установка, настройка, первая программа

Время на прочтение2 мин
Охват и читатели20K
Здравствуйте,

Ни разу не видел за определённый промежуток своей работы с HPC людей, пишущих на Java параллельные программы. Сам писал кое-что на С, разглядывал Фортран, но душа всегда тянулась к Java. В конце концов сел и попробовал разобраться.

Содержание:
1) Имплементации MPI for Java; Что это? Где взять?
2) Как установить всё это? Как настроить?
3) Напишем свою самую-самую простую программу. Как её запустить?

Читать дальше →

Джеймс Гослинг объясняет, почему ушёл из Oracle

Время на прочтение3 мин
Охват и читатели6.1K
Джеймс Гослинг дал эксклюзивное интервью eWeek, где впервые подробно рассказал о причинах, заставивших его покинуть компанию Oracle.

По его словам, для увольнения был целый ряд причин, начиная с зарплаты. В Oracle ему предложили точно такую же зарплату, но лишили всех бонусов, а ведь если бизнес шёл хорошо, то бонусы приносили денег гораздо больше, чем базовая зарплата.

Кроме того, в должностной иерархии Oracle не оказалось позиции такого уровня, которая была у Гослинга в Sun (fellow), так что ему фактически пришлось сильно спуститься по должностной лестнице.
Читать дальше →

Integer и int

Время на прочтение4 мин
Охват и читатели148K
В этом топике я хочу описать некоторые базовые различия между примитивными типами и соответствующими им объектными на примере int и Integer. Различия эти достаточно простые и, если немного задуматься, то вполне логичные, но, как показал опыт, программист не всегда над этим задумывается.

Основное различие, разумеется, в том, что Integer — это полнофункциональный объект, который занимает место в куче, а в коде вы пользуетесь ссылками на него, которые неявно преобразуются в значения:
int a = 1000// a - число
Integer b = 1000// b - ссылка на объект
При присваивании значения переменной типа Integer обычно выделяется память в куче под новый объект, как будто вы написали new Integer(1000) (так называемый autoboxing). Однако иногда переиспользуются старые объекты. Это иллюстрирует следующий код (JDK 1.6):
Integer a1 = 50;
Integer a2 = 50;
Integer b1 = 500;
Integer b2 = 500;
System.out.println(a1==a2);
System.out.println(b1==b2);
Результатом выполнения будет:
true
false
Читать дальше →

Загрузка классов в Java. Практика

Время на прочтение7 мин
Охват и читатели85K
Данная статья является продолжением статьи Загрузка классов в Java. Теория.

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

Код приложения не претендует на оригинальность, а лишь объясняет подходы и принципы написания пользовательских загрузчиков классов и методы инвокации динамического кода.
Читать дальше →

Загрузка классов в Java. Теория

Время на прочтение4 мин
Охват и читатели206K


Одной из основных особенностей платформы Java является модель динамической загрузки классов, которая позволяет загружать исполняемый код в JRE не перезагружая основое приложение. Такая особенность широко используется в серверах приложений, получивших последнее время высокую популярность.

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

Читать дальше →

Строковые классы Java. Сравнение производительности

Время на прочтение4 мин
Охват и читатели36K
Никогда не задавались вопросом насколько собственно отличается производительность строковых классов Java?

В данном топике я попытался сравнить производительность java.lang классов String, StringBuilder и StringBuffer.
Читать дальше →

Свое представление (view) в Spring MVC

Время на прочтение5 мин
Охват и читатели17K
Если вы работали с Spring MVC то наверняка обращали внимание, что он поддерживает множество различных представлений (view), которые позволяют генерировать pdf, excel, csv использовать jstl, freemarker, velocity и jasperReports. Но что делать если вам потребовалось заполнить какой либо документ в формате docx по шаблону и передать его пользователю? С одной стороны можно в методе воспользоваться доступом к стандартному response и если планируется использовать такую генерацию множество раз, то вынести ее в отдельный класс. Но такое решение не слишком изящно и нарушает MVC-паттерн.
Что можно сделать чтобы этого не происходило?

Ближайшие события

Database Connection Pool

Время на прочтение3 мин
Охват и читатели164K
Добрый день, хабралюди!
2 недели назад я начал работать juior java разработчиком, и, соответственно, получать много нового для себя опыта. Сегодня я решил совместить приятное с полезным и начать этот опыт оформлять в письменные мысли — в виде статей о тех технологиях, принципах и приёмах, с которыми я столкнулся на своём джуниорском пути. Нижеследующая статья — первая среди подобных, и выкладывая её здесь, я хочу, во-первых, понять, нужны ли хабрасообществу подобные вещи — рассказы не умудрённых опытом и сотнями проектов старожилов, а небольшие попытки поделится опытом от джуниора джуниору, — а во-вторых, как обычно, услышать замечания, исправления и критику.
Спасибо за внимание.


Подавляющее большинство современных веб-приложений использует базы данных для хранения информации. Приложение может обмениваться информацией с БД, используя соединение (database connection). Если создавать при каждом обращении к БД, получается проигрыш во времени: выполнение транзакции может занять несколько милисекунд, в то время как на создание соединения может уйти до нескольких секунд. С другой стороны, можно создать одно-единственное соединение (например, используя шаблон "Singleton") и обращаться к базе данных только через него. Но это решение чревато проблемами, в случае высокой нагрузки: если одновременно сто пользователей попытается получить доступ к базе данных используя одно соединение, образуется очередь, что также пагубно сказывается на производительности приложения.

Database Connection Pool (dbcp) — это способ решения изложенной выше проблемы.
Читать дальше →

Несколько слов об использовании перечислений в изменяющейся среде

Время на прочтение6 мин
Охват и читатели33K
Данный пост предлагает решение проблем с использованием перечислений при изменении состава констант или наличия дублирования кода при их использовании. В остальных случаях применение озвученного ниже подхода, как правило, нецелесообразно.

Читать дальше →

Spring в действии — пробуем opensource CMS на Java

Время на прочтение5 мин
Охват и читатели35K
В данной статье речь пойдёт о системе управления содержимым Riot, написанной на Java. Система основана на Spring Framework, использует Ajax.

web developer at work

Я приведу основные возможности системы и пошагово расскажу, как её установить. Статья адресована всем тем, кто интересуется системами управления содержимым на Java.
Читать дальше →

Сборка Java приложений при помощи Apache Ant, quick start

Время на прочтение12 мин
Охват и читатели53K

О чем эта статья


Одной из отличительных особенностей платформы Java является ее независимость от используемого инструментария. Вы можете разрабатывать сколь угодно большое Java приложение при помощи блокнота (vi) и командной строки. Понятно что так никто не делает и все используют какую-то IDE. Как следствие независимости от инструментов — IDE для Java много. Все это хорошо но есть одна особенность. Если Ваш коллега делал приложение и для сборки проекта использовал IDE_A то в IDE_B которая стоит у Вас — собрать приложение не получится.
В общем-то это давно уже не проблема. Хорошей практикой считается использовать систему сборки не зависящую от IDE. Для Java их две это Apache-Ant и Maven (тоже в общем-то Apache). Но тут есть один подводный камень. Если в Delphi или Visual Studio, чтобы создать и собрать приложение надо кликнуть в кнопку new пройтись по шагам визарда и нажать кнопку собрать, то написание ant скрипта для сборки например web приложения, особенно для начинающего разработчика, задача не тривиальная.
В статье рассматривается сборка и деплой Java web приложения шаг за шагом.

В целом задачу можно решить как с помощью ant так и с помощью maven, здесь будет рассмотрен ant. Для начинающих он проще и нагляднее.

Примечание 10 лет спустя

Решил посмотрел на свою статью написанную 10 лет назад. Звучит старомодно, в 2021 я в общем случае не рекомендую собирать Java приложения при помощи ant. НО если уж у вас возникла такая необходимость, то статья все еще может помочь. Пусть живет.

Читать дальше →

Кэширование данных в приложениях с Spring 3, размещенных в AppEngine

Время на прочтение7 мин
Охват и читатели6.6K
В этой статье я расскажу как можно кэшировать в memcache значения, возвращаемые методами bean'ов. Для этого не потребуется писать код, достаточно добавить конфигурации в xml файлы Spring'а и разметить код с помощью аннотаций.

Итак поредставим что у нас есть DAO с тремя методами — двумя для поиска сущностей и одним для сохранения сущностей. Для правильного функционирования нам нужен интерфейс и реализующий его класс (чтобы можно было добавить dynamic proxy на реализацию)
немного xml

Мемоизация в Java

Время на прочтение9 мин
Охват и читатели12K
Мемоизация — (Memoization, англ) вариант кеширования, заключающийся в том, что для функции создаётся таблица результатов, и будучи вычисленной при определённых значениях параметров результат заносится в эту таблицу. В дальнейшем результат берётся из данной таблицы.
Эта техника позволяет засчёт использования дополнительной памяти ускорить работу программы.Данный подход очень частно применяется в функциональных языках программирования, однако и в императивных ему так же можно найти применение. В данном топике рассматривается использование мемоизации в языке java приводятся различные примеры мемоизации и в конце производится небольшое сравнение производительности данных методов.
Читать дальше →

Вклад авторов