Системы управления базами данных в повседневной жизни людей

Системы управления базами данных в повседневной жизни людей

Система управления базами данных, сокращенно СУБД– это совокупность лингвистических и программных средств, позволяющих управлять созданием и использованием баз данных.

Сама база данных (далее — БД) представляет собой набор данных, организованный в вычислительной системе по определенным правилам и  характеризующий какую-либо предметную область.

Путеводитель по db4о для Java-разработчика: Транзакции, распределенный доступ и безопасность

Путеводитель по db4о для Java-разработчика: Транзакции, распределенный доступ и безопасность

В предыдущих статьях серии я освещал основы объектно-ориентированной работы с данными в db4o. Одним из вопросов, которые я обошел вниманием, является использование ООСУБД в Web-приложениях и чем оно отличается от использования в приложениях Swing или SWT. Кто-то может сказать, что я проигнорировал целый круг вопросов, которые обязан знать любой .NET- или Java-разработчик.

Дело в том, что я хотел сосредоточиться на наиболее привлекательных возможностях ООСУБД: объектно-ориентированном хранении, манипулировании и выборке данных. К тому же поставщики ООСУБД как правило реализуют базовые функции, такие как управление транзакциями и обеспечение безопасности, аналогично РСУБД, предоставляя столь же широкий набор опций.

Эффективный перенос данных с помощью zero copy

Эффективный перенос данных с помощью zero copy

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

Каждый раз, когда данные пересекают границу пользователь-ядро, их необходимо копировать; при этом затрачиваются ресурсы процессора и памяти. К счастью, этого копирования можно избежать с помощью технологии с соответствующим названием— zero copy. Приложения, использующие zero copy, запрашивают ядро о копировании данных прямо с диска в сокет, не затрагивая приложения. Zero copy значительно улучшает производительность приложений и уменьшает число контекстных переключений между режимами пользователя и ядра.

Мониторинг работы Java-приложений: Часть 1. Мониторинг производительности и степени готовности Java-систем

Мониторинг работы Java-приложений: Часть 1. Мониторинг производительности и степени готовности Java-систем

Многих современные Java-приложения включают сложный набор распределенных и зависящих друг от друга компонентов, а также обладают динамической структурой. Поэтому производительность и степень готовности приложения потенциально зависят от множества внешних факторов. Подобные зависимости практически невозможно свести на нет, либо точно смоделировать в тестовом окружении перед вводом в эксплуатацию. А значит, при работе приложения могут происходить всякие неожиданности. Тем не менее можно облегчить последствия и сократить длительность нежелательных событий путем создания и сопровождения системы для всеобъемлющего мониторинга среды, в которой выполняется ваше приложение.

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

Путеводитель по Scala для Java-разработчиков: Не зацикливайтесь!

Путеводитель по Scala для Java-разработчиков: Не зацикливайтесь!

До сих пор в публикациях этой серии я уделял основное внимание тесной связи Scala с экосистемой Java, демонстрируя вам то, как Scala включает в себя преобладающую часть объектной функциональности Java. Однако если бы Scala просто являлся другим способом написания объектов, он бы не представлял собой ничего интересного, а тем более выдающегося, как это есть на самом деле. Объединение в Scala функциональных и объектных концепций, усиленное акцентом на эффективность процесса программирования, ощутимо усложняет и замедляет изучение языка, что может быть неочевидно для начинающего Java/Scala-программиста.
Об этой серии

Тед Ньюорд погружается в язык программирования Scala и берет вас с собой. В этой новой серии от developerWorks вы узнаете, вокруг чего поднят такой шум, и увидите некоторые лингвистические возможности Scala в действии. Код Scala и код Java будут показаны бок о бок, если таковое сравнение будет важно. Правда, как скоро выяснится, многие вещи в Scala не могут быть напрямую соотнесены с чем-либо таким, что вам знакомо из Java-программирования, — но в этом и заключается основное очарование Scala! В конце концов, если что-то можно сделать на Java — зачем утруждать себя изучением Scala?

Что нового в Java Portlet Specification V2.0 (JSR 286)?

Что нового в Java Portlet Specification V2.0 (JSR 286)?

Портлеты – это компоненты приложений с пользовательским интерфейсом, формирующие содержимое в одном из стандартных форматов разметки (к примеру, HTML). Эта разметка предназначена для агрегирования портлетов с другими фрагментами в единое большое приложение, например, страницу порталa

Портлеты могут рассматриваться как сервисы пользовательского графического интерфейса, который распространяют сервис-ориентированную архитектуру (SOA) на интерфейс для конечных пользователей.

Портлеты Java стали популярны после выхода первой версии Java Portlet Specification, JSR-168, выпущенной в 2003 сообществом Java Community Processes. С этого момента почти все вендоры, разрабатывающие порталы Java, как коммерческие, так и с открытым исходным кодом, реализовали этот стандарт, и разработчики стали писать портлеты, использующие Java Portlet API.

Внедрение зависимостей с помощью Guice

Внедрение зависимостей с помощью Guice

Guice — это инфраструктура для внедрения или инъекции зависимостей (dependency injection или сокращенно DI). Я уже несколько лет являюсь активным сторонником использования DI, потому что это улучшает сопровождаемость, тестируемость и гибкость кода. Наблюдая за тем, как разработчики реагируют на Guice, я понял, что лучший способ убедить программиста начать применять новую технологию — сделать ее по-настоящему простой. Guice действительно предельно упрощает DI, и в результате этот подход получил в Google широкое распространение. Я надеюсь, что эта статья поможет сделать и ваше изучение Guice по-настоящему простым.
Для обзора, а не для споров

Guice — далеко не первая DI-инфраструктура. Есть целое множество замечательных инфраструктур (В разделе Ресурсы есть ссылка на страничку сайта PicoContainer, — одной из таких инфраструктур, — где рассказывается об истории развития и взаимоотношениях различных инфраструктур. Позднее появление Guice породило дискуссии о том, какая из существующих инфраструктур лучше и о том, нужна ли вообще еще одна DI-инфраструктура. Как при любом выборе технологии, каждая библиотека имеет свои плюсы и минусы. На мой взгляд, Guice содержит важные нововведения, но в этой статье я не буду ввязываться в споры, а сделаю обзор возможностей Guice. (В Интернете можно найти множество оживленных дискуссий, поискав по словам «guice vs spring».)

Java. Создание и сборка проектов с помощью Maven на примере Web-проекта

Java. Создание и сборка проектов с помощью Maven на примере Web-проекта

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

Рассмотрим, как с помощью maven можно создать и собрать проект.
В качестве примера возьмем пример Web-приложения имеющего 2 модуля, собственно сам WEB-проект (SimpleWEB) и модуль (SimpleLogic), в котором будет находиться логика.

Первое, что нам нужно сделать, это настроить maven. Полную инструкцию можно прочитать на сайте maven. Краткое описание:
Скачаваем дистрибутив с сайта maven. В нашем примере, версия 2.0.9.
Распаковываем на диск, например в c:\tools\apache-maven (в дальнейшем, ${maven.home})

Путеводитель по Scala для Java-разработчиков: Часть 2. Cоздание калькулятора

Путеводитель по Scala для Java-разработчиков: Часть 2. Cоздание калькулятора

На настоящий момент ситуация выглядит следующим образом: в процессе создания DSL (в нашем случае – простого языка арифметических выражений) мы определили структуру AST со следующими типами вершин:
бинарные операторы сложения, вычитания, умножения и деления;
унарный оператор смены знака (отрицания);
числовые константы.

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

При этом код интерпретатора выглядит следующим образом

Java EE 5: Мощь и производительность при меньшей сложности

Java EE 5: Мощь и производительность при меньшей сложности

Технология Java EE является расширением языковой платформы Java, которое позволяет создавать масштабируемые, мощные и переносимые корпоративные приложения. В ней определено четыре типа контейнеров для компонентов приложения: Web, Enterprise JavaBean (EJB), клиентские приложения и аплеты. Эти контейнеры и поддерживаемые ими Java API подробно описаны в спецификации сервера приложений, что создает и поддерживает конкуренцию на рынке продуктов Java EE, гарантируя при этом серверную переносимость для приложений, которые придерживаются спецификации (см. врезку Краткая история Java EE).

Последняя версия платформы, Java EE 5, была выпущена в мае 2006 года. Сосредоточенная в первую очередь на производительности разработчика, Java EE 5 предоставляет простую модель программирования без ущерба для мощности и функциональности платформы. Упрощение моделей разработки обеспечивают по большей части два механизма — аннотации Java и разумные значения по умолчанию. Важнейшие функциональные усовершенствования включают расширение поддержки Web-сервисов, а также включение в платформу JavaServer Faces (JSF) и стандартной библиотеки тегов Java (JSTL — Java Standard Tag Library).
Краткая история Java EE