O documento apresenta o DeltaSpike, um conjunto de extensões portáteis para CDI que fornecem funcionalidades úteis para aplicações Java que não são suportadas pela especificação CDI. O DeltaSpike inclui módulos para segurança, JPA, JSF, validação de beans, agendamento de tarefas e outros que facilitam o desenvolvimento com CDI. O DeltaSpike não é um framework completo, mas sim um conjunto de ferramentas que estendem as capacidades do CDI.
Talk presented at Meetup Laravel SP #3 about docker from basics to docker orchestration.
Presented in 2015-05-07
Video da apresentação:
https://youtu.be/mR2px-mKjd0
Containers para Software! A mais nova revolução, trazida ao mundo pela Dockers, rodando hoje na AWS. Venha conhecer esta inovadora e revolucionária tecnologia que vai mudar a forma como você desenvolve e implementa software.
Slides da palestra ministrada no TDC São Paulo 2014, na trilha PHP. A idéia central da palestra é introduzir os conceitos da ferramenta Docker, apresentados da visão de um programador PHP, denotando as vantagens de se utilizar a ferramenta para o desenvolvimento de software em PHP.
Talk presented at Meetup Laravel SP #3 about docker from basics to docker orchestration.
Presented in 2015-05-07
Video da apresentação:
https://youtu.be/mR2px-mKjd0
Containers para Software! A mais nova revolução, trazida ao mundo pela Dockers, rodando hoje na AWS. Venha conhecer esta inovadora e revolucionária tecnologia que vai mudar a forma como você desenvolve e implementa software.
Slides da palestra ministrada no TDC São Paulo 2014, na trilha PHP. A idéia central da palestra é introduzir os conceitos da ferramenta Docker, apresentados da visão de um programador PHP, denotando as vantagens de se utilizar a ferramenta para o desenvolvimento de software em PHP.
Apresentação de Docker para Maiores realizado na Superlogica Tecnologias.
Link dos exemplos: https://github.com/msfidelis/DockerParaMaioresSuperlogica/
Slides da palestra apresentada no QCon 2019 sobre Kubernetes e um deepdive em seus componentes (apiserver, scheduler, ingress, etc) e os objetos do cluster
Nesta apresentação faço uma abordagem prática sobre a tecnologia Docker e o seu uso, introduzo o usuário a visão geral de mercado de empresas que usam e fazem parte do ecossistema da tecnologia.
Trato desde o porque considerar usar a tecnologia até a implantação com sistemas distribuídos em cluster
Criando uma grid para execução de testes paralelo com AppiumElias Nogueira
Palestra ministrada em 19/04/2018 na Trilha Mobile do The Developers Conference Florianópolis que fala como criar um device farm para a execução de testes paralelos usando Appium
Orquestrando Docker Containers: Machine, Swarm e ComposeRoberto Hashioka
Orquestrando Docker containers com Machine, Swarm e Compose
----------------------------------
Orchestrating Docker Containers with Machine, Swarm and Compose
----------------------------------
Apresentação: #5 Docker Sao Paulo Meetup
Apresentação da ferramenta Docker para o pessoal da Websix. Passos básicos de como iniciar a utilização de containers a seu favor. Padronização de ambiente de desenvolvimento, staging, QA e Produção
Docker, facilitando a vida do desenvolvimentoSérgio Lima
Dessa vez, vamos falar de um "calo" de muitos desenvolvedores, ambientes, vamos falar de uma das principais ferramentas que facilitam e nos auxiliam nessa jornada, o Docker.
Exemplos no githug: https://github.com/sergiosdlima/meetup-phpdf-docker
Apresentação feita no nono meetup PHP FC de Brasília.
Architecting cloud-enabled applications using Spring-Integration 2.xEdson Yanaga
Minha apresentação no JavaOne Brasil 2011 em São Paulo/SP. Trata-se de uma introdução aos Enterprise Integration Patterns (EIPs) e à uma implementação de ESB, o Spring Integration 2.x
Apresentação de Docker para Maiores realizado na Superlogica Tecnologias.
Link dos exemplos: https://github.com/msfidelis/DockerParaMaioresSuperlogica/
Slides da palestra apresentada no QCon 2019 sobre Kubernetes e um deepdive em seus componentes (apiserver, scheduler, ingress, etc) e os objetos do cluster
Nesta apresentação faço uma abordagem prática sobre a tecnologia Docker e o seu uso, introduzo o usuário a visão geral de mercado de empresas que usam e fazem parte do ecossistema da tecnologia.
Trato desde o porque considerar usar a tecnologia até a implantação com sistemas distribuídos em cluster
Criando uma grid para execução de testes paralelo com AppiumElias Nogueira
Palestra ministrada em 19/04/2018 na Trilha Mobile do The Developers Conference Florianópolis que fala como criar um device farm para a execução de testes paralelos usando Appium
Orquestrando Docker Containers: Machine, Swarm e ComposeRoberto Hashioka
Orquestrando Docker containers com Machine, Swarm e Compose
----------------------------------
Orchestrating Docker Containers with Machine, Swarm and Compose
----------------------------------
Apresentação: #5 Docker Sao Paulo Meetup
Apresentação da ferramenta Docker para o pessoal da Websix. Passos básicos de como iniciar a utilização de containers a seu favor. Padronização de ambiente de desenvolvimento, staging, QA e Produção
Docker, facilitando a vida do desenvolvimentoSérgio Lima
Dessa vez, vamos falar de um "calo" de muitos desenvolvedores, ambientes, vamos falar de uma das principais ferramentas que facilitam e nos auxiliam nessa jornada, o Docker.
Exemplos no githug: https://github.com/sergiosdlima/meetup-phpdf-docker
Apresentação feita no nono meetup PHP FC de Brasília.
Architecting cloud-enabled applications using Spring-Integration 2.xEdson Yanaga
Minha apresentação no JavaOne Brasil 2011 em São Paulo/SP. Trata-se de uma introdução aos Enterprise Integration Patterns (EIPs) e à uma implementação de ESB, o Spring Integration 2.x
Java Craftsmanship: Lessons Learned on How to Produce Truly Beautiful Java CodeEdson Yanaga
Programming is a journey. To achieve effective, clean, easy-to-read, and beautiful Java code, you have to practice programming every day. This session shares some lessons collected along 15 years of Java programming. It includes live code examples of how to write truly object-oriented code; when to make a type (and how to use it on JPA providers); how to properly use encapsulation and polymorphism in "ifless" programming; how to properly take advantage of the enum power; and how to use some very useful open source libraries such as Google Guava and Joda-Time to achieve clean Java code.
Session presented at JavaOne Latin America 2012.
Write Powerful Javascript Modules To Make Your Apps DRY (Brian Leathem)Red Hat Developers
Large-scale Javascript applications benefit from a modular approach that let code be reused both within the application and across repeated implementations. In this session, we'll look at the modular approach used to build reusable Javascript modules in the Red Hat mobile field workforce management application (WFM) showcased in this year's Summit middleware keynote demo. Reusable modules for WFM are packaged as node package manager (npm) modules, providing a consistent format for both server and client sides using Node.js and Browserify. Modules are loosely coupled using the Mediator pattern and they broadcast user actions and state changes giving the application and other modules the opportunity to hook into those events. Additionally, visual components are packaged in a framework-agnostic manner, providing reusable UI components. You'll leave this session understanding the challenges faced when building reusable modules for large-scale applications, and the solutions employed in building out the reusable WFM modules.
CDK 2.0: Docker, Kubernetes, And OSE On Your Desk (Langdon White)Red Hat Developers
Scale changes everything. What once was quite adequate for enterprise messaging can't scale to support "Internet of Things". We need new protocols, patterns and architectures to support this new world. This session will start with basic introduction to the concept of Internet of Things. Next it will discuss general technical challenges involved with the concept and explain why it is becoming mainstream now. Now we’re ready to start talking about solutions. We will introduce some messaging patterns (like telemetry and command/control) and protocols (such as MQTT and AMQP) used in these scenarios. Finally we will see how Apache ActiveMQ is gearing up for this race. We will show tips for horizontal and vertical scaling of the broker, related projects that can help with deployments and what the future development road map looks like.
High Performance Data Storage in a Microservices EnvironmentRed Hat Developers
By Thomas Qvarnstrom
High Performance Data Storage in a Microservices Environment
This session explains how JBoss Data Grid (Infinispan) can be used as a high performance data storage and how to use Apache Spark analytics to avoid data silos.
When building microservices it’s a common practice to use a separate data store per service so that it can scale together with the service. Even if this scales better and enables individual release schedules per services it also leads to more data silos.
Despite the popularity and hype of containers, there is no need to regard containers as a block box. It is important to have an awareness of what's going on under the hood to help optimize your container requirements. In this session, we'll discuss: - Namespacing in the kernel - Copy-on-write storage choices - Portable container formats - Available container alternatives - Validation, trust, and content addressability with image verification See examples and options for your use-cases.
By Christian Posta
See how easy it is for developers to create and build microservices with Spring Boot and WildFly Swarm and deploy them to Kubernetes
By Rafael Benevides and Edson Yanaga
Yes, Docker is great. We are all very aware of that, but now it’s time to take the next step: wrapping it all and deploying to a production environment. For this scenario, we need something more. For that “more,” we have Kubernetes by Google, a container platform based on the same technology used to deploy billions of containers per month on Google’s infrastructure. Ready to leverage your Docker skills and package your current Java app (WAR, EAR, or JAR)? Come to this session to see how your current Docker skill set can be easily mapped to Kubernetes concepts and commands. And get ready to deploy your containers in production.
Delivering an app or service fast and frequently to production isn't the same as delivering the app or service fast and frequently to its intended users. Before an app is actually 'live' it has to run the gauntlet of production deployment that stands between it and real, live users. While DevOps has helped organizations make huge strides toward continuous delivery in dev and test environments, the production environment remains a very real obstacle in realizing continuous deployment. The biggest hurdle in that obstacle course is a narrow definition of DevOps that fails to include a broad set of technologies and tools outside the Dev and Ops domain. In this session we'll explore the underlying elements of a comprehensive DevOps approach (SDN, CD/CI, and Agile) and how they mix, match, and combine to enable the operational transformation DevOps promises to achieve the ultimate goal of IT agility: continuous deployment.
The Deploy Master: From Basic to Zero Downtime, Blue/Green, A/B and CanaryRed Hat Developers
By Edson Yanaga and Rafael Benevides
The “deploy moment” is an occasion that still gives many developers the shivers. But it shouldn’t be this way (at least not every time). Luckily enough, we have tools and processes today that enable us to turn the deploy moment into a usual activity. Check out this session to learn how we can evolve our Java deployment process from the very basic to zero downtime and then apply some very interesting strategies such as blue/green, A/B, and Canary deployments.
By Clement Escoffier
Sorry, there is no free lunch—distributed applications are complex. You can embrace any trends such as microservices, but developing a distributed application is a challenge. Why? Distributed systems have many reasons to fail: technically they’re complicated, and the theory behind distributed systems is also complicated. Vert.x is a toolkit for building reactive distributed applications on top of the Java Virtual Machine in Java, JavaScript, Groovy, Ruby, or Ceylon. Vert.x does not hide the complexity of distributed applications; it lets you manage it. Vert.x applications are able to manage failures, can use several protocols and interaction styles, can handle heavy loads, and can cope with most of the requirements of modern applications.
Java and DevOps: Supercharge Your Delivery Pipeline with ContainersRed Hat Developers
As developers we have one main goal: solve problems through software development. For that, the code we write has to be put to use, in the hands of the intended user. But more often then not, our code get stuck in interminable delivery processes... But we can do better, and we can create streamlined delivery pipelines, and implement continuous delivery and deploy processes in our projects. And one of the most promising technologies to get our code ready to solve real problems is software containers. This panel will bring together developers that understand the benefits of containers technologies, to clarify their importance, their problems, and how to apply to real world projects.
By Rafael Benevides and Christian Posta
A lot of functionality necessary for running in a microservices architecture have been built into Kubernetes; why would you re-invent the wheel with lots of complicated client-side libraries? Have you ever asked why you should use containers and what are the benefits for your application? This talk will present a microservices application that have been built using different Java platforms: WildFly Swarm and Vert.x. Then we will deploy this application in a Kubernetes cluster to present the advantages of containers for MSA (Microservices Architectures) and DevOps. The attendees will learn how to create, edit, build, deploy Java Microservices, and also how to perform service discovery, rolling updates, persistent volumes and much more. Finally we will fix a bug and see how a CI/CD Pipeline automates the process and reduces the deployment time.
Developing In Python On Red Hat Platforms (Nick Coghlan & Graham Dumpleton)Red Hat Developers
Red Hat Software Collections, OpenShift and the Red Hat Container Development Kit open up many new possibilities for Python developers targeting Red Hat Enterprise Linux. At the same time, the wider Python ecosystem is undergoing two significant transitions - one being the ongoing migration from Python 2 to Python 3, and the other the shift to correctly validating HTTPS connections by default. In this session we will cover the currently available options for developing with Python on Red Hat platforms, as well as provide some insight into where things are headed in the context of the wider Python ecosystem.
Apresentação feita no MeetUp do SouJava Campinas.
Nessa apresentação explicamos os conceitos básicos de Gradle utilizando diversos exemplos. No final apresentamos algumas características que fazem de Gradle uma ótima opção para usar no seu próximo projeto.
Exemplos disponíveis em: https://github.com/wrpinheiro/gradle-soujava-meetup
Aqui são apresentados conceitos básicos a plataforma Java. Simples e rápido.
/**Depois que entrei no mundo Java, começei a procurar por conteúdo na internet para estudar, então me deparei com um ótimo site, http://www.argonavis.com.br, de um grande cara chamado Helder Rocha, que disponibiliza este mesmo conteúdo em seu site também. Obrigado pela ajuda a comunidade.*/
SpringSource Tool Suite, tc Server e dm ServerDr. Spock
Slides usados pelo Ricardo Jun na apresentação realizada no Casual Class sobre a plataforma Spring promovido pela Globalcode e Spring Brasil User Group no dia 26/02/2010 em São Paulo/SP.
Testes em aplicações JEE: Montando sua infra de testes automatizadosDiego Santos
A 4Linux foi uma das patrocinadoras do Just Java 2012 que ocorreu nos dias 18 e 19/05/2012. Além do patrocínio, a equipe 4Linux foi responsável pela apresentação da palestra: Testes em aplicações Java EE: Montando sua infra de testes automatizados.
O Liferay Portal sempre foi uma aplicação rica em recursos, com milhares de funcionalidades e opções resultando em bilhões de cenários possíveis de implantação. Ainda assim, por trás de toda a configuração o núcleo central do Liferay é tudo ou nada. Vamos apresentar as estratégias que estão sendo utilizadas para introduzir modularidade no Liferay e melhorar a qualidade, facilitar a manutenção e ainda permitir que funcionalidades opcionais sejam completamente removidas ou facilmente atualizadas.
Liferay Symposium Brazil 2014
11 de Novembro de 2014
Em uma visão macro, o que tiveram destaque para uma filtragem mais especificas foram o ZEND2 devido a robustez e grande credibilidade de mercado, CodeIgniter devido a grande parte do que saim do desenvolvimento "comum" e passam a ter um primeiro contado com algum tipo de framework, e suas comunidades bastante ativas, e Yii a mais jovens desse framework, porém com um grande crescimento nos últimos anos no meio do desenvolvimento PHP.
Obtive um resultado positivo, pois aderir por uma escolhe bastante objetiva e que hoje tem me dado resultado de usabilidade e tempo.
TDC 2015 - Execução em Background e Live Tiles em Universal AppsDiego Castro
Slides usado na palestra "Execução em Background e Live Tiles em Universal Apps" na trilha "Universal Windows" do TDC 2015
http://www.thedevelopersconference.com.br/tdc/2015/saopaulo/trilha-universal-windows
Inversão de Controlo e Injecção de Dependência na .NET FrameworkC. Augusto Proiete
Apresentação realizada no evento Microsoft TechDays 2010 (http://www.techdays2010.com) sobre Inversão de Controlo e Injecção de Dependência na .NET Framework.
7. Globalcode – Open4education
Qual o propósito do
projeto DeltaSpike ?
“Suportar o desenvolvimento de Portable Extensions
CDI que promovam funcionalidades úteis para
aplicações Java que não são fornecidas pela
especificação CDI.”
(Documentação DeltaSpike)
12. Globalcode – Open4education
Strong typing
Injeção de dependência tipada
Elimina a dependência de Strings
Fácil refatoração
Compilador pode detectar erros
Nenhuma ferramenta especial é
necessária
Elimina cast (ok, esconde casts)
Resolução de erros detectado durante deploy
Strong typing == Strong tooling
13. Globalcode – Open4education
Principais funcionalidades
Exception Handler
try {
// Invoca um serviço que lança exception
} catch (NoResultException e) {
// O tratamento de exception é delegado para os @ExceptionHandlers
catchEvent.fire(new ExceptionToCatchEvent(e));
}
Handlers
@ExceptionHandler
public class MyHandler {
void fazAlgoComException(@Handles ExceptionEvent<Throwable> evt) {
// Faz Algo com a Exception
evt.handledAndContinue();
}
}
14. Globalcode – Open4education
Principais funcionalidades
Type-safe Project Stage
UnitTest,
Development
SystemTest
IntegrationTest
Staging
Production
Configurável via DeltaSpike Configuration API
@Inject
private ProjectStage projectStage;
boolean isDevProjectStage = ProjectStage
.Development.equals(this.projectStage);
<h:panelGroup layout="block"
rendered="#{applicationConfig.projectStage == 'Development'}"
-Dorg.apache.deltaspike.ProjectStage=Development
15. Globalcode – Open4education
Principais Funcionalidades
DeltaSpike Configuration API
public String getFilaJMS() {
return ConfigResolver.getProjectStageAwarePropertyValue("jms.queue");
}
jms.queue.Production=queue/queueProduction
jms.queue.Development=queue/queueDevelopment
Múltiplos ConfigSources:
System properties (deltaspike_ordinal = 400)
Environment properties (deltaspike_ordinal = 300)
JNDI values (deltaspike_ordinal = 200, the base name is "java:comp/env/deltaspike/")
Properties file values (apache-deltaspike.properties) (deltaspike_ordinal = 100,
default filename is "META-INF/apache-deltaspike.properties")
17. Globalcode – Open4education
Principais funcionalidades
I18n Messages
@Named("msg")
@MessageBundle
public interface Messages {
public String usuarioAdicionado(String username);
public String usuario();
@MessageTemplate("{password}")
public String senha();
}
<br /> #{msg.senha()}:
@Inject
private Messages messages;
new FacesMessage(msg.usuarioAdicionado("Rafael"));
18. Globalcode – Open4education
Principais funcionalidades
Segurança
@Retention(value = RetentionPolicy.RUNTIME)
@Target({ ElementType.TYPE, ElementType.METHOD })
@Documented
@SecurityBindingType
public @interface AdminOnly {
}
@ApplicationScoped
public class ApplicationAuthorizer
{
@Secures
@AdminOnly
public boolean verificaPermissao(InvocationContext invocationContext,
BeanManager manager, @Logado Usuario usuario) throws Exception {
return usuario.getRole().equalsIgnoreCase("Admin");
}
}
@AdminOnly
public void iniciarTarefaAdministrativa() {
// Inicia uma tarefa
}
19. Globalcode – Open4education
Principais Funcionalidades
Data Module – Repository Pattern
@Repository
public interface RepositorioUsuarios extends EntityRepository<Usuario, Long> {
// O DeltaSpike cria um proxy com implementações para
●
count();
●
findAll();
●
findBy(PK);
●
flush();
●
refresh();
●
remove();
●
save();
●
saveAndFlush();
}
20. Globalcode – Open4education
Principais Funcionalidades
Data Module – Repository Pattern
@Repository
public interface RepositorioUsuarios extends EntityRepository<Usuario, Long> {
// O próprio nome do método cria o SQL
public Usuario findByUsernameAndPassword(String username, char[]
password);
}
@Repository
public interface RepositorioPostagens extends EntityRepository<Postagem,
Long> {
@Query("SELECT p FROM Postagem AS p WHERE p.autor in (?1)")
public List<Postagem> findBySeguidos(List<Usuario> usuariosSeguidos);
}
21. Globalcode – Open4education
Principais funcionalidades
Type-safe view-config for JSF
// type-safe outcome
public Class<Welcome> telaHome() {
return Home.class;
}
@Inject
ViewNavigationHandler vnh;
// type-safe outcome
public Class<CriarUsuario> tela2() {
vnh.navigateTo(CriarUsuario.class);
}
@Secured(CustomAccessDecisionVoter.class)
public interface SecuredPages {}
@View(navigation = REDIRECT)
public interface Pages extends ViewConfig
{
class Index implements Pages {
}
interface Admin extends Pages, SecuredPages
{
class Index implements Admin {
}
@View(navigation = FORWARD)
class Home implements Admin {
}
}
}
22. Globalcode – Open4education
Principais funcionalidades
@WindowScoped
“É como se fosse uma sessão por aba/janela...
Não existem muitos casos de uso que precisam
compartilhar dados entre as abas.”
(Documentação DeltaSpike)
23. Globalcode – Open4education
Principais funcionalidades
Agendador de Jobs integrado com o Quartz
//Job de exemplo agendado para rodar a cada 1 minuto
@Scheduled(cronExpression = "0 0/1 * * * ?", onStartup = false)
public class CdiAwareQuartzJob implements org.quartz.Job {
// O Job permite injeção CDI
@Inject
private AdminServices service;
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
service.executarRotinasAdministrativas();
}
} @Inject
private Scheduler<Job> jobScheduler;
public void iniciarTarefaAdministrativa() {
jobScheduler.registerNewJob(CdiAwareQuartzJob.class);
}
25. Globalcode – Open4education
Outras funcionalidades
Bean Validation Module
Permite que “Validators” recebam injeção de objetos via
CDI em ambiente java EE 6 / CDI 1.0
Partial Bean
Permite a criação de implementações para suas
interfaces ou classes abstratas
26. Globalcode – Open4education
Outras funcionalidades
Container Control
Permite fazer o boot de implementações CDI em
ambiente Java SE, bem como controlar o ciclo de vida
dos contextos
Test Control
Facilita a criação de testes CDI
Inicia e finalizar o container CDI / Inicia Contextos
Controla o ProjectStage
27. Globalcode – Open4education
Conclusão
O DeltaSpike não é um full-stack framework
O DeltaSpike é um conjunto de Portable Extensions para
facilitar o desenvolvimento Java utilizando CDI
O DeltaSpike é um conjunto de ferramentas!
according to OCP software should be open for extension and closed for modification
Você não precisa abrir o peito de uma pessoa para colocar um casaco.
according to OCP software should be open for extension and closed for modification
Você não precisa abrir o peito de uma pessoa para colocar um casaco.
CDI possibilita a extensão de suas funcionalidades – Hack Java EE :)
A especificação fornece um SPI (que é uma Service Provider Interface), onde o o Provedor de serviços implementa uma interface para estender o CDI
Esta funcionalidade é oficialmante chamada de CDI Portable Extensions
É portable pois todos os servers devem suportar sua implantação
Nada mais, nada menos que um JAR
Conjunto de Portable Extensions CDI com diversas funcionalidades e extensões prontas para você dar uma acelerada no seu projeto.
Quem estava escrevendo Portable Extensions CDI?
O DeltaSpike NÃO é um full stack frameworkj como o Seam, Spring, Play, etc
Não há nada de errado hoje em dia nos chamados Full Stack Frameworks (englobam funcionalides para View, Persistência, Segurança)
A confusão veio por causa do Seam 3
Mesmo com a garantia de portabilidade na especidicac&apos;ão CDI para Portalble estensions,
A integração contínua do DeltaSpike é testada nas implmentações Glassfish, 3 e 4, Weld 1, 2, TomEE, OpenWebBeans
Antes de falarmos das funcionalidades, é preciso saber...
O DeltaSpike por ser baseado em CDI é fortemente tipado.
Oq isto significa ?
Ou pelo menos as funcionalidades que mais me atraem
Posso ter os mais variados Handlers: Logar a Exception:
- enviar para uma console administrativa,
- enviar para uma fila para ser tratada,
- Tratar exceptions específicas de maneira diferenciada, etc
Permite configurar o estágio do projeto.
Algum dos estágio pré-definidos, você pode criar um stage custom (caso sua empresa tenha algo fora do normal)
Permite passar configurações para a aplicação
Multiplas configurações por ProjectStage
Multiplos origens de configuração, inclusive um custom
Permite injectar InputStreams de maneira fácil
Pode ser um arquivo texto, uma imagem, etc
Permite que o código fique mais expressivo, além de facilitar e muito lidar com grandes sistemas que requeiram internacionalização
Vantagem1: Evita Strings no código / facilita refactoring
Vantagem2: Evitar cadastrar chaves duplicadas
A segurança também é type-safe onde pode-se criar anotações que serão checadas por métodos específicos
O Data Module criar um proxy com implementações de alguns métodos básicos como save, saveAndFlush, remove, count, findBy(PK), etc
Além disso, é possível criar queries customizadas usando o nome do método ou então declarar a query com a anotação @Query
Apesar do JSF estar caindo em desuso o type-safe view config é uma mão não roda
Permite a injeção de beans CDI em Jobs Quartz,
Permite a injeção de um Schedduler para manipular os Jobs
Permite o agendamento do Jobs através da anotação @Scheduled
Permite em ambiente CDI 1.0 a injeção de objetos do ambiente Servlet.
É possível utilizar o qualifier @Deltaspike para seu código ter compatibilidade com o CDI 1.1 onde esta funcionlidade faz parte da especificação
Também é possível registrar listerners CDI para os eventos gerados pelo Servlet