Какая модель/библиотека моделей для Java?
Существует так много различных моделей Actor для Java (и языков JVM).
Было реализовано множество библиотек и фреймворков Actor, позволяющих программировать в стиле Actor на Java (у которого нет встроенных Актеров). Я думаю, что у модели Actor есть большие преимущества, но выбор для Java огромен!
Может ли кто-нибудь опубликовать самые популярные и предложить некоторое представление о том, что использовать? Какие из них имеют контрольные показатели пропускной способности с точки зрения сообщений, передаваемых в секунду?
Ответы
Ответ 1
Это - хорошая серия статей. Также см. эту презентацию. Карл Хьюитт объясняет суть модели вычисления здесь.
Killim и Akka (scala ) имеет лучшую производительность. Я бы предложил использовать Akka.
Начиная с Scala 2.11.0, библиотека Scala Актеров устарела. Уже в Scala 2.10.0 библиотека актеров по умолчанию - Akka. Используйте akka в качестве интерфейса и вызовите свой Java-код, если вы не хотите делать все кодирование в Scala. Scala и Akka имеет очень хороший синтаксис и API. Акка имеет Java API под названием "Активные объекты". Обратите внимание, что в Акке сейчас происходит много чего, поэтому база кода движется быстро. См. начало работы с Java
Killim основан на Java, но компилирует временное плетение.
Jetlang и FunctionalJava - это параметры который не выполняет компиляцию во времени (? unsure), но не так быстро, как Akka и Killim (никаких текущих данных по этому поводу, но есть некоторые старые числа в Джонас Бонерс и Виктор Клангс беседуют в Scala Days 2010).
Другие варианты - использование обычной JMS (или другого MQ/PubSub). Также вы могли бы сделать свои собственные простые каналы публикации/работника JVM. Или просто используйте java util concurrent ExecutorService или com.google.common.util. одновременно
Другие Scala основанные фреймворки/библиотеки с реализациями Actor Stambecco, Lift и Scalaz.
Другие аналогичные модели Служба распределенного сервиса Hazlecast, Oracle Coherence с InvocableService, исполнителями GigaSpaces или IBM eXtreme Scale. Но в какой-то степени это не означает, что "Актеры - системы".
Ответ 2
Jumi Actors - это актерская библиотека для Java. Он был разработан для естественного использования в Java-коде - вам не нужно создавать класс для каждого сообщения, но сообщения представлены как методы на интерфейсе. Также его участники собирают мусор, поэтому им не нужно явно останавливаться. Код с использованием Jumi Actors testable, как единый тестируемый, без контейнера-участников, так и для интеграции с возможностью тестирования с использованием детерминированной однопоточной реализации контейнера.
По сравнению с Аккой Актеры он намного меньше в двоичном размере (33 КБ против 10+ МБ) и намного быстрее. Глядя на пример Pi в учебнике Akka и тот же пример с участием Jumi Actors, с Akka вычисление берет 480-520 мс, но с Jumi Actors всего 350-390 мс. (Разница, несомненно, была бы еще больше, если бы актеры не работали, и мы будем измерять только передачу сообщений.) При сравнении производительности запуска запуск контейнера Akka занимает 620 мс, но запуск контейнера Jumi Actors занимает всего 25 мс.
Ответ 3
Мы провели соответствующее исследование под названием "Рамочные рамки для платформы JVM: сравнительный анализ", который был опубликован в прошлом году, и сравнивает синтаксис, семантику и производительность некоторых основанных на JVM рамок для актеров. Он доступен в https://www.researchgate.net/profile/Gul_Agha/publication/221302944_Actor_frameworks_for_the_JVM_platform/links/55aeb2df08aed614b09a775c.pdf?origin=publication_detail. Надеюсь, вы сочтете это полезным.
Ответ 4
Другой вариант - GPars. Groovy, но может быть вызван с Java, как Akka.
Ответ 5
Актеры Scala - мое лучшее предложение.
См. http://www.scala-lang.org/node/242 для краткого руководства.
Ответ 6
Ну, я искал хорошую реализацию актеров в Scala, и посмотрел как на родные Scala, так и на Akka. Я нашел оба этих сложного комплекса. Затем я нашел Lift Actors, который я нашел простым, элегантным и хорошо продуманным. Все вышесказанное можно использовать с Java (с помощью Java-дружественных именованных методов).
Обсуждение по адресу: http://erikengbrecht.blogspot.com/2009/06/pondering-actor-design-trades.html
Загрузить по адресу: http://liftweb.net/
Вам просто нужен лифтинг-актер _?. jar и lift-common _?. jar из загрузок Lift (плюс Scala std lib). Взгляните на актеров Lift Scala источник: очень аккуратный.