SlideShare uma empresa Scribd logo
Produtividade em Java
Com Grails
Objetivo



 “Apresentar a framework Grails, como uma
   evolução dentro da plataforma Java, que
  eleva a produtividade com o menor risco, e
  está pronta para a computação nas nuvens”
Introdução

 Plataformas?
   Java, .NET, PHP, Ruby, Python...
 Frameworks?
   Hibernate/JPA, Spring, “EJB”...
 Frameworks Web?
   Java: Tapestry 5, Wicket, JSF, Struts...
   Rails, Django, WebForms/MVC...
Apresentação


  Eteg Tecnologia Ltda.
    Sistemas Java e .Net
    Capacitação / treinamento
    MPS.BR Nível F


  Wanderson Santos
    Arquiteto de Sistemas e Instrutor @ Eteg
    Ampla experiência com plataformas Java, .NET e PHP
    Entusiasta das práticas ágeis para desenvolvimento
Plataforma Java

 Plataforma = Fundação
   Programamos com linguagem Java na plataforma
   Java
 Linguagem Java (class, for, if, get/set...)
   A linguagem exige muita repetição (ex. get/set)
 Plataforma Java (JVM, JAR/libs, WAR..)
   A plataforma exige muita configuração
Software sempre

 “Revoluções por minuto”
 A todo momento surgem...
   Novas linguagens, mais avançadas que as
   anteriores
   Novas plataformas, mais avançadas que as
   anteriores
Como lidar com este fato?

 Ignorar: não mudar nada
   “Vamos manter nossos sistemas em VB 6”
   “Eu ainda não tive problemas com JSP/JDBC”
 Resultado
   Perda de produtividade para o mercado
   Escassez de talentos
   Qualidade x Produtividade
Como lidar com este fato?

 Revolução: mudar tudo
   “Migrar nossos sistemas em Delphi para .NET”
   “Abandonar o Java para trilhar no Ruby On Rails”
 Resultado
   Perda de ativos de reuso
   Reescrita de todas as bibliotecas (arrg!)
   Grandes arquiteturas de integração
Como lidar com este fato?

 Evolução: mudar o que não está bom
   “Vamos manter a plataforma Java e migrar para
   linguagem Groovy”
 Resultado
   Mantém ativos de reuso (mesma plataforma)
   Migração iterativa
     Novo módulo ou sistemas será mais produtivo
Veredito

 O problema não é aprender....
   Desenvolvedores querem sempre melhorar sua
   produtividade, aprender coisas novas
   Tendência: programador poliglota
     Uma linguagem para cada objetivo (DSLs). Ex.: SQL
 O problema é perder o que foi feito!
   “Todas as bibliotecas em Delphi tiveram que ser
   convertidas para Java.”
O que é Groovy?

 “Linguagem Java 2.0”
   Sintaxe reduzida e poder funcional
   Linguagem padrão Java (JSR-241)
 Inclui recursos encontrados no Python,
 Ruby e Smalltalk, mantendo sintaxe Java
   Inferência de tipos (def), closures, etc.
 JDK padrão turbinada (Groovy JDK)
Classe Java

public class Usuario {
  private String nome;
  private Date dataNascimento;
  public String getNome() {
      return nome;
 }
 (...não cabe no slide! ☺)
Classe Groovy ☺

class Usuario {
  String nome
  Date dataNascimento
}




          Obs.: Aceita todas a sintaxe da linguagem Java!
Coleção em Java

List frutas = new ArrayList();
frutas.add(‘pera’);
frutas.add(‘uva’);
frutas.add(‘maca’);
for (String fruta : frutas) {
  System.out.println(fruta);
}
Coleção em Groovy ☺

def frutas = [‘pera’,’uva’,’maca’]
frutas.each {
  println it
}

//Fui embora mais cedo!
I Love Groovy ☺

 println "${usuario.nome}, ${usuario.idade}”
 > João Ribeiro, 35

 def hoje = new Date()
 println hoje.format(‘MMM/yy’)
 > Set/2009


                       Tem muito, mas muito mais!
Arquitetura Java

 Configurar e manter uma boa arquitetura
 demanda tempo e muito conhecimento
   Muitas bibliotecas e frameworks
   Muitas camadas
     Escravos de Jó
   Muita configuração
     XML, XML, XML...
Grails – O cálice sagrado

 Full-Stack Framework
   Groovy + Spring + Hibernate
 “Groovy On Rails”
   A disruptividade do Rails dentro da conhecida
   Plataforma Java
 Guiada por princípios
   Convenção sob Configuração
   “Não se repita” (DRY)
Arquitetura Grails

 Utiliza camadas convencionais
   View
   Controller
   Service*
   Domain
 Cada camada tem uma pasta específica
 Só utiliza camada Service para controlar
 transação de persistência.
Disruptividades

 Utiliza a sintaxe concisa e clara do Groovy
 No XML “hell”
   Configuração por convenção
   Mesmo a configuração necessária não usa XML
 No DAO
   Métodos para persistência são injetados nas
   entidades (ActiveRecord Pattern)
Exemplo: Configuração

environments {
    development {
       dataSource {
            username = "sa"
            password = ""
            dbCreate = "create-drop"
            url = "jdbc:mysql://dbserver"
...
Exemplo: Persistência

def wans = new Usuario()
wans.nome = ‘Wanderson Santos’
wans.dataNascimento =
  Date.parse(‘dd/MM/yyyy’,’01/11/1981’)
wans.dataCadastro = new Date()
wans.save() //fui!
Disruptividades

 Abstrai as frameworks padrão de mercado
   Meta-plataforma
     Contato “zero” com Hibernate e Spring
   Se precisar, pode contar com eles!
 Curva de aprendizado branda
   Consideravelmente menor do que outras
   soluções na plataforma Java
 Qualidade com produtividade!
Exemplo: Consultas

def silvas = Usuario.withCriteria {
  def hoje = new Date()
  between(‘dataCadastro’, hoje-7, hoje)
  like(‘nome’, ‘%Silva%')
  maxResults(5)
  order(‘dataAniversario’, ‘desc’)
}
Exemplo: Visão

<body>
  Olá ${params.mundo} !
  <g:each in="${[1,2,3]}" var=“numero">
     <p>Número ${numero}</p>
  </g:each>
</body>
Grails no mercado

 Mantida pela Spring Source
 Ávida comunidade (www.grails.org)
 Documentação excepcional
   Guia do Usuário (passo-a-passo)
   Guia de Referência
 http://www.grailsbrasil.com/
Ferramentas para Grails

 Baseado em linha de comando (rails-like)
   Muitos programam sem IDE
 Estrutura de projeto com 1 comando
   grails create-app infocon
 Excelente suporte no IntelliJ IDEA 8
 Suporte completo na Spring IDE (Eclipse)
 em Outubro/09
Grails Plugins

 Extensibilidade da framework
   Similar ao conceito de JARs, porém orientadas as
   convenções do Grails
   grails install-plugin auditable
 Tem plugin pra tudo! ☺
   Autenticação, Busca Avançada, Componentes
   Visuais, Auditoria e vários outros...
Por que Grails?

 Mantem investimento na plataforma Java
   Bibliotecas JARs, Tomcat, JBoss, JVM, etc.
 Traz uma nova forma de pensar uma
 aplicação (herança do Rails)
   Remove gorduras extras da linguagem Java e
   suas respectivas configurações
 Muito prático e produtivo
   Thanks Groovy! ☺
Grails é verde!

 Roda nativamente na Cloud Foundry
   Basta trocar o “DataSource”
 Cloud Foundry
   Plataforma aberta baseada no Cloud Tools
   Abstrai plataformas existentes (Amazon EC2)
 Eteg já escala em máquinas “virtualizadas”
   A conhecida robustez da plataforma Java
Declarações

 LinkedIn (250 funcionários)
   “For our usage, Grails is a lot more productive
   than current crop of mainstream Java Web-App
   Frameworks” [in Grails At LinkedIn]

 Eteg Tecnologia
   “Grails simplificou nossa curva de aprendizado e
   reduziu a complexidade de implementação de
   nossos sistemas”
   “Tivemos uma considerável melhoria de
   produtividade, reduzindo o total de horas
   consumidas por projeto”
Por onde começar?

 Grails User Guide (www.grails.org)
 IBM “Mastering Grails”
 Diversos livros no mercado
 Cadastrar-se em fóruns e listas de
 discussão
 Muitas referências na Web!
Perguntas?
Obrigado!

Visite-nos: www.eteg.com.br
Email: wanderson@eteg.com.br
Twitter: @wanswins
Referências

 Site oficial: http://www.grails.org
 Grails Introduction
 http://www.slideshare.net/glaforge/grails-
 introduction-ijtc-2007-presentation
 Grails At LinkedIn
 http://www.slideshare.net/linkedin/grails-at-
 linked

Mais conteúdo relacionado

PPTX
Java virtual machine quantas linguas fala a jvm2
PPTX
Gestão automática de configuração usando puppet
ODP
(DevOps) Gerencia de Configuração, Puppet, Ansible e Chef uma Analise Compara...
PPTX
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
PDF
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
PDF
Trabalhando com Módulos no Puppet
KEY
Oficina Puppet - Aprenda a Gerenciar Configurações
PDF
Oficina de infraestrutura como código (apresentando o Puppet)
Java virtual machine quantas linguas fala a jvm2
Gestão automática de configuração usando puppet
(DevOps) Gerencia de Configuração, Puppet, Ansible e Chef uma Analise Compara...
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Trabalhando com Módulos no Puppet
Oficina Puppet - Aprenda a Gerenciar Configurações
Oficina de infraestrutura como código (apresentando o Puppet)

Mais procurados (20)

PPTX
Maven em 10 minutos
PDF
Django - A sua cápsula de soluções web em python
PDF
JavaFX 1.2
PDF
Joomla! do desktop ao datacenter
PPTX
Maven 3, Sonar e Hudson
PDF
Infraestrutura como código com Puppet e Mcollective
PDF
Infraestrutura ágil com Puppet - CISL
PPTX
MongoDB + PHP
PDF
Como escolher o Framework Java para web?
PDF
Tdd em django sem desculpas versao final
PPTX
NodeJS - Tutorial de forma simples e pratica.
PDF
Python na Web
PDF
Treinamento Básico de Django
PDF
Consegi 2011: Puppet
PDF
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
PPT
55 New Things in Java 7 - Brazil
PPTX
Introdução ao NodeJS
PDF
Esta começando a programar para a web? Então começe com Rails
PDF
Boas práticas de django
PDF
Ferramentas para infraestrutura ágil
Maven em 10 minutos
Django - A sua cápsula de soluções web em python
JavaFX 1.2
Joomla! do desktop ao datacenter
Maven 3, Sonar e Hudson
Infraestrutura como código com Puppet e Mcollective
Infraestrutura ágil com Puppet - CISL
MongoDB + PHP
Como escolher o Framework Java para web?
Tdd em django sem desculpas versao final
NodeJS - Tutorial de forma simples e pratica.
Python na Web
Treinamento Básico de Django
Consegi 2011: Puppet
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
55 New Things in Java 7 - Brazil
Introdução ao NodeJS
Esta começando a programar para a web? Então começe com Rails
Boas práticas de django
Ferramentas para infraestrutura ágil
Anúncio

Destaque (9)

ODP
Groovy grails
PDF
Groovy & grails
ODP
Grails: O Java em Alta Produtividade
PDF
JavaEE nos trilhos
PPT
Rapida apresentacao sobre o Grails
PDF
Oficina groovy grails - infoway
PPT
Grails, o que isso quer dizer?
PPTX
Desenvolvimento Ágil com Grails.
PDF
Curso de Grails
Groovy grails
Groovy & grails
Grails: O Java em Alta Produtividade
JavaEE nos trilhos
Rapida apresentacao sobre o Grails
Oficina groovy grails - infoway
Grails, o que isso quer dizer?
Desenvolvimento Ágil com Grails.
Curso de Grails
Anúncio

Semelhante a Produtividade em Java com Grails (20)

PPTX
Inovando na plataforma Java
PPTX
Inovando na Plataforma Java
PDF
Cloud Computing - Java no Google App Engine
PDF
Compweek
PDF
Java no Google App Engine - TDC2011
ODP
Linguagens Dinamicas na JVM
PDF
Tutorial Java EE
PPT
Apostila de Fundamentos Java
ODP
Java - Learn Once Use Anywhere
PPT
Java Seminar
PDF
Sistema S2DG e Tecnologias Web
PPTX
JSF2 ScrumToys SestInfo 2010
PDF
Java Web Fácil com VRaptor
PDF
JavaFX: A nova biblioteca gráfica da plataforma Java
PDF
Java Bahia Desenvolvimento Java Area1
ODP
Apresentação java
ODP
Desenvolvimento Java
PPT
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
PDF
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
PDF
Manual
Inovando na plataforma Java
Inovando na Plataforma Java
Cloud Computing - Java no Google App Engine
Compweek
Java no Google App Engine - TDC2011
Linguagens Dinamicas na JVM
Tutorial Java EE
Apostila de Fundamentos Java
Java - Learn Once Use Anywhere
Java Seminar
Sistema S2DG e Tecnologias Web
JSF2 ScrumToys SestInfo 2010
Java Web Fácil com VRaptor
JavaFX: A nova biblioteca gráfica da plataforma Java
Java Bahia Desenvolvimento Java Area1
Apresentação java
Desenvolvimento Java
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Manual

Último (19)

PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PDF
Aula04-Academia Heri- Tecnologia Geral 2025
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PDF
Processos na gestão de transportes, TM100 Col18
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
Apple Pippin Uma breve introdução. - David Glotz
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PPTX
Aula 18 - Manipulacao De Arquivos python
PDF
COBITxITIL-Entenda as diferença em uso governança TI
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Custos e liquidação no SAP Transportation Management, TM130 Col18
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Aula04-Academia Heri- Tecnologia Geral 2025
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Processos na gestão de transportes, TM100 Col18
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Apple Pippin Uma breve introdução. - David Glotz
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Aula 18 - Manipulacao De Arquivos python
COBITxITIL-Entenda as diferença em uso governança TI

Produtividade em Java com Grails

  • 2. Objetivo “Apresentar a framework Grails, como uma evolução dentro da plataforma Java, que eleva a produtividade com o menor risco, e está pronta para a computação nas nuvens”
  • 3. Introdução Plataformas? Java, .NET, PHP, Ruby, Python... Frameworks? Hibernate/JPA, Spring, “EJB”... Frameworks Web? Java: Tapestry 5, Wicket, JSF, Struts... Rails, Django, WebForms/MVC...
  • 4. Apresentação Eteg Tecnologia Ltda. Sistemas Java e .Net Capacitação / treinamento MPS.BR Nível F Wanderson Santos Arquiteto de Sistemas e Instrutor @ Eteg Ampla experiência com plataformas Java, .NET e PHP Entusiasta das práticas ágeis para desenvolvimento
  • 5. Plataforma Java Plataforma = Fundação Programamos com linguagem Java na plataforma Java Linguagem Java (class, for, if, get/set...) A linguagem exige muita repetição (ex. get/set) Plataforma Java (JVM, JAR/libs, WAR..) A plataforma exige muita configuração
  • 6. Software sempre “Revoluções por minuto” A todo momento surgem... Novas linguagens, mais avançadas que as anteriores Novas plataformas, mais avançadas que as anteriores
  • 7. Como lidar com este fato? Ignorar: não mudar nada “Vamos manter nossos sistemas em VB 6” “Eu ainda não tive problemas com JSP/JDBC” Resultado Perda de produtividade para o mercado Escassez de talentos Qualidade x Produtividade
  • 8. Como lidar com este fato? Revolução: mudar tudo “Migrar nossos sistemas em Delphi para .NET” “Abandonar o Java para trilhar no Ruby On Rails” Resultado Perda de ativos de reuso Reescrita de todas as bibliotecas (arrg!) Grandes arquiteturas de integração
  • 9. Como lidar com este fato? Evolução: mudar o que não está bom “Vamos manter a plataforma Java e migrar para linguagem Groovy” Resultado Mantém ativos de reuso (mesma plataforma) Migração iterativa Novo módulo ou sistemas será mais produtivo
  • 10. Veredito O problema não é aprender.... Desenvolvedores querem sempre melhorar sua produtividade, aprender coisas novas Tendência: programador poliglota Uma linguagem para cada objetivo (DSLs). Ex.: SQL O problema é perder o que foi feito! “Todas as bibliotecas em Delphi tiveram que ser convertidas para Java.”
  • 11. O que é Groovy? “Linguagem Java 2.0” Sintaxe reduzida e poder funcional Linguagem padrão Java (JSR-241) Inclui recursos encontrados no Python, Ruby e Smalltalk, mantendo sintaxe Java Inferência de tipos (def), closures, etc. JDK padrão turbinada (Groovy JDK)
  • 12. Classe Java public class Usuario { private String nome; private Date dataNascimento; public String getNome() { return nome; } (...não cabe no slide! ☺)
  • 13. Classe Groovy ☺ class Usuario { String nome Date dataNascimento } Obs.: Aceita todas a sintaxe da linguagem Java!
  • 14. Coleção em Java List frutas = new ArrayList(); frutas.add(‘pera’); frutas.add(‘uva’); frutas.add(‘maca’); for (String fruta : frutas) { System.out.println(fruta); }
  • 15. Coleção em Groovy ☺ def frutas = [‘pera’,’uva’,’maca’] frutas.each { println it } //Fui embora mais cedo!
  • 16. I Love Groovy ☺ println "${usuario.nome}, ${usuario.idade}” > João Ribeiro, 35 def hoje = new Date() println hoje.format(‘MMM/yy’) > Set/2009 Tem muito, mas muito mais!
  • 17. Arquitetura Java Configurar e manter uma boa arquitetura demanda tempo e muito conhecimento Muitas bibliotecas e frameworks Muitas camadas Escravos de Jó Muita configuração XML, XML, XML...
  • 18. Grails – O cálice sagrado Full-Stack Framework Groovy + Spring + Hibernate “Groovy On Rails” A disruptividade do Rails dentro da conhecida Plataforma Java Guiada por princípios Convenção sob Configuração “Não se repita” (DRY)
  • 19. Arquitetura Grails Utiliza camadas convencionais View Controller Service* Domain Cada camada tem uma pasta específica Só utiliza camada Service para controlar transação de persistência.
  • 20. Disruptividades Utiliza a sintaxe concisa e clara do Groovy No XML “hell” Configuração por convenção Mesmo a configuração necessária não usa XML No DAO Métodos para persistência são injetados nas entidades (ActiveRecord Pattern)
  • 21. Exemplo: Configuração environments { development { dataSource { username = "sa" password = "" dbCreate = "create-drop" url = "jdbc:mysql://dbserver" ...
  • 22. Exemplo: Persistência def wans = new Usuario() wans.nome = ‘Wanderson Santos’ wans.dataNascimento = Date.parse(‘dd/MM/yyyy’,’01/11/1981’) wans.dataCadastro = new Date() wans.save() //fui!
  • 23. Disruptividades Abstrai as frameworks padrão de mercado Meta-plataforma Contato “zero” com Hibernate e Spring Se precisar, pode contar com eles! Curva de aprendizado branda Consideravelmente menor do que outras soluções na plataforma Java Qualidade com produtividade!
  • 24. Exemplo: Consultas def silvas = Usuario.withCriteria { def hoje = new Date() between(‘dataCadastro’, hoje-7, hoje) like(‘nome’, ‘%Silva%') maxResults(5) order(‘dataAniversario’, ‘desc’) }
  • 25. Exemplo: Visão <body> Olá ${params.mundo} ! <g:each in="${[1,2,3]}" var=“numero"> <p>Número ${numero}</p> </g:each> </body>
  • 26. Grails no mercado Mantida pela Spring Source Ávida comunidade (www.grails.org) Documentação excepcional Guia do Usuário (passo-a-passo) Guia de Referência http://www.grailsbrasil.com/
  • 27. Ferramentas para Grails Baseado em linha de comando (rails-like) Muitos programam sem IDE Estrutura de projeto com 1 comando grails create-app infocon Excelente suporte no IntelliJ IDEA 8 Suporte completo na Spring IDE (Eclipse) em Outubro/09
  • 28. Grails Plugins Extensibilidade da framework Similar ao conceito de JARs, porém orientadas as convenções do Grails grails install-plugin auditable Tem plugin pra tudo! ☺ Autenticação, Busca Avançada, Componentes Visuais, Auditoria e vários outros...
  • 29. Por que Grails? Mantem investimento na plataforma Java Bibliotecas JARs, Tomcat, JBoss, JVM, etc. Traz uma nova forma de pensar uma aplicação (herança do Rails) Remove gorduras extras da linguagem Java e suas respectivas configurações Muito prático e produtivo Thanks Groovy! ☺
  • 30. Grails é verde! Roda nativamente na Cloud Foundry Basta trocar o “DataSource” Cloud Foundry Plataforma aberta baseada no Cloud Tools Abstrai plataformas existentes (Amazon EC2) Eteg já escala em máquinas “virtualizadas” A conhecida robustez da plataforma Java
  • 31. Declarações LinkedIn (250 funcionários) “For our usage, Grails is a lot more productive than current crop of mainstream Java Web-App Frameworks” [in Grails At LinkedIn] Eteg Tecnologia “Grails simplificou nossa curva de aprendizado e reduziu a complexidade de implementação de nossos sistemas” “Tivemos uma considerável melhoria de produtividade, reduzindo o total de horas consumidas por projeto”
  • 32. Por onde começar? Grails User Guide (www.grails.org) IBM “Mastering Grails” Diversos livros no mercado Cadastrar-se em fóruns e listas de discussão Muitas referências na Web!
  • 35. Referências Site oficial: http://www.grails.org Grails Introduction http://www.slideshare.net/glaforge/grails- introduction-ijtc-2007-presentation Grails At LinkedIn http://www.slideshare.net/linkedin/grails-at- linked