пятница, 27 апреля 2012 г.

[Java EE]: Comparing SCA, Java EE and JBI

Comparing SCA, Java EE and JBI:

"There are three approaches to develop back-end integration solutions:

- invocation (JCA, JAX-WS, WS-IF),

- mediation (JBI)

- activation (SCA)."

"This is precisely one of the problems in JEE today because back-end integration does not always fit well the synchronous request/response model."

P.S. Задача: таки разобраться что это такое - SCA, JBI, ESB:)

P.P.S. Суровый старается прояснить - "Три подхода к интеграции информационных систем":

Интеграция на уровне данных.

Интеграция на уровне бизнес-процессов (ESB).

Интеграция на уровне композитных приложений (JBI, SCA).

"...Таким образом на одном шаге бизнес-процесса могут взаимодействовать несколько сервисов, в то время как при интеграции на уровне бизнес-процессов на одном шаге процесса вызывается один сервис."

пятница, 20 апреля 2012 г.

Сменил работу - сменится тематика публикаций

Добрый день, я в Новый Год сменил работу.
Теперь занимаюсь не управлением учебным процессом в харьковском EPAM (+ преподавание), а Java EE Architect в Enko Solutions.
Вследствие чего может измениться тематика публикаций.
Вначале каждого поста могут появиться теги
- [PJP]: Professional Java Programming
- [J2EE]: J2EE
- [Quiz]: Quiz
- и т.д.
Это связано с тем, что материалы по Java EE стали входить в круг моих интересов.

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

среда, 28 марта 2012 г.

Lambda Expressions for the Java8

JSR-335 Lambda Expressions for the JavaTM Programming Language 0.4.2 Early Draft Review

JSR 335 (Lambda Expressions for the JavaTM Programming Language) aims to support programming in a multicore environment by adding closures and related features to the Java language.
JSR 335 is part of JSR 337 (Java SE 8). The Early Draft Review #1 of JSR 335 has been published.


Слайды от Brian Goetz.

Для добавления нового функционала в библиотеки, возможно, введут virtual extension method.

Gack, is this multiple inheritance in Java?
- Yes, but Java already has multiple inheritance of types
- This adds multiple inheritance of behavior too
- But not state, which is where most of the trouble is

Выступаю на РИТ 2012

Выступаю на РИТ 2012: http://ritconf.ru/2012/guru/index.html

Распределенные кэши: подводные камни
Иван Головач

Приводится последовательность реализаций распределенного кэша, которые один за одним исключают «негативные феномены» — совокупности чтения/записи, приводящие к нежелательным (и зачастую неожиданным) результатам. После чего такая последовательность ставится в соответствие с известными Memory Consistency Models (Linearizable, Sequential Consistent, Causal Order, PRAM, ...). Это позволяет теоретически обосновать и измерить «цену» за консистентность кэша.

Цель доклада — подвести разработанную теоретическую базу («Distributed Algorithms» by Nancy A. Lynch, «Distributed Computing: Fundamentals, Simulations, and Advanced Topics» by Hagit Attiya and Jennifer Welch, «Introduction to Distributed Algorithms» by Gerard Tel) в части Distributed Shared Memory over Message Passing под практически используемые кэши — показать, чем приходится платить (read latency, write latency, network packets count) за повышение уровня консистенции распределенного кэша.

Целевая аудитория
Доклад будет интересен всем специалистам, помещающим часть бизнесс-логики в distributed cache/IMDG (Oracle Coherence, Gemstone GemFire, Gigaspaces XAP, JBoss Infinispan, Hazelcast, EHCache).

Информация о докладчике
Иван Головач — J2EE архитектор в стартапе Domosti.ru, опыт 8 лет в j2ee, c++. В данный момент ответственный за архитектуру проекта Domosti.ru (EJB, JMS, Spring, Postgres, JSF, RichFaces).

Ведет блог KharkovConcurrencyGroup.blogspot.com.

Область математических интересов: подходы к спецификации non Strict Consistency систем (New Java Memory Model, Transaction Isolation Levels, Distributed Shared Memory Consistency Models)

четверг, 16 февраля 2012 г.

понедельник, 13 февраля 2012 г.

воскресенье, 5 февраля 2012 г.

четверг, 2 февраля 2012 г.

"Сладкие" вакансии

DISTRIBUTED MIDDLEWARE ARCHITECT
...
Saint Petersburg, Russia
...
15+ years of overall experience
5+ years in leading technical positions
100% hands-on individual developer
Proven early stage startup experience
Ability to work directly with CTO on critical areas of product functionality
Expert knowledge of Java, Scala and Groovy
Fluent in Unix/Win environment and system programming
Guru-level proven experience in high performance computing
Published work, speaking engagements are the major plus
Expert knowledge in parallel and distributed programming
Demonstrable experience in distributed middleware is a must
Keen understanding of target market and fundamental of product marketing
Ability to cross-function between sales, marketing and product development
Some travel may be required - up to 10%

воскресенье, 29 января 2012 г.

Java 7 Phaser - academia paper

Phasers: a Unified Deadlock-Free Construct for Collective and Point-to-point Synchronization

ABSTRACT
Coordination and synchronization of parallel tasks is a major source of complexity in parallel programming. These constructs take many forms in practice including mutual exclusion in accesses to shared resources, termination detection of child tasks, collective barrier synchronization, and point-to-point synchronization. In this paper, we introduce phasers, a new coordination construct that unifies collective and point-to-point synchronizations. We establish two safety properties for phasers: deadlock-freedom and phaseordering. Performance results obtained from a portable implementation of phasers on three different SMP platforms demonstrate that phasers can deliver superior performance to existing barrier implementations, in addition to the productivity benefits that result from their generality and safety properties.

P.S. From this article - New Java Concurrency Feature: Phasers

четверг, 22 декабря 2011 г.

суббота, 17 декабря 2011 г.

среда, 7 декабря 2011 г.

Java наносит ответный удар (по Scala)

Real life Scala feedback from Yammer

"Right now at Yammer we're moving our basic infrastructure stack over to Java"

"Scala, as a language, has some profoundly interesting ideas in it. That's one of the things which attracted me to it in the first place. But it's also a very complex language. The number of concepts I had to explain to new members of our team for even the simplest usage of a collection was surprising: implicit parameters, builder typeclasses, "operator overloahttp://www.blogger.com/img/blank.gifding", return type inference, etc. etc. Then the particulars: what's a Traversable vs. a TraversableOnce? GenTraversable? Iterable? IterableLike? Should they be choosing the most general type for parameters, and if so what was that? What was a =:= and where could they get one from?"

"In addition to the concepts and specific implementations that Scala introduces, there is also a cultural layer of what it means to write idiomatic Scala."

"In hindsight, I definitely underestimated both the difficulty and importance of learning (and teaching) Scala."

"Contrast this with the default for the JVM ecosystem: if new hires write Java, they're productive as soon as we can get them a keyboard."

"Despite the fact that we're moving away from Scala, I still think it's one of the most interesting, innovative, and exciting languages I've used ..."

вторник, 6 декабря 2011 г.

[Book]: Actors in Scala

Actors in Scala

Table of contents:
Contents viii
List of Figures x
List of Listings xi
Preface xiii
1. Concurrency Everywhere 15 (download free sample chapter PDF)
2. Messages All the Way Up 25
3. Scala's Language Support for Actors 41
4. Actor Chat 42
5. Event-Based Programming 52
6. Exception Handling, Actor Termination and Shutdown 65
7. Customizing Actor Execution 80
8. Remote Actors 95
9. Using Scala Actors with Java APIs 96
10. Distributed and Parallel Computing with Scala Actors 97
Bibliography 98
About the Authors 100
Index 101

State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM

"State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM"

"What is an Identity?
A stable logical Identity associated with a series of different Values over time."

"What is State?
The Value an entity with a specific Identity has at a particular point in time."

"Haw do we know if something has State?
If a function is invoked with the same arguments at two different points in time and returns different values ... than it has State."

P.S. More on State (Clojure)

понедельник, 5 декабря 2011 г.

Akka: Transactor

Transactors

"Generally, the STM is not needed very often when working with Akka. Some use-cases (that we can think of) are:
1. When you really need composable message flows across many actors updating their internal local state but need them to do that atomically in one big transaction. Might not often, but when you do need this then you are screwed without it.
2. When you want to share a datastructure across actors.
3. When you need to use the persistence modules.
"

"Actors are excellent for solving problems where you have many independent processes that can work in isolation and only interact with other Actors through message passing."

"But the actor model is unfortunately a terrible model for implementing truly shared state. E.g. when you need to have consensus and a stable view of state across many components."

"STM on the other hand is excellent for problems where you need consensus and a stable view of the state by providing compositional transactional shared state. Some of the really nice traits of STM are that transactions compose, and it raises the abstraction level from lock-based concurrency."

"Akka provides an explicit mechanism for coordinating transactions across Actors. Under the hood it uses a CountDownCommitBarrier, similar to a CountDownLatch."

Akka - an open source, event-driven middleware project

"Akka - an open source, event-driven middleware project"

"... It is designed to allow developers to write simpler, correct concurrent applications using Actors, STM (software transactional memory) and transactors."

Doug Lea Discusses the Fork/Join Framework

"Doug Lea Discusses the Fork/Join Framework"

"...Part of this is that we have the luxury of building this framework on systems that have, for example, high performance, scalable, concurrent garbage collection, because garbage collection in these frameworks turns out to be an interesting issue. If you are implementing them, say in C, you generally have to slow down a lot of things in order to get the memory allocation right. In our case, we will spew lots of garbage, but it's very well behaved garbage and it's picked up by the garbage collector because it is unused 99% of the time."