Nicotine é um framework web Java moderno que combina a estrutura robusta com a performance .
Desenvolvido para criar aplicações web dinâmicas e interativas completamente em Java, oferecendo uma alternativa nativa à necessidade de frameworks JavaScript.
- 🚀 Performance Excepcional: Sem Virtual DOM, compilação ahead-of-time
- 🎯 100% Java: Frontend e backend integrados nativamente
- 📦 Batteries Included: Tudo que você precisa em um único framework
- 🔄 Hot Reload: Desenvolvimento ágil com atualização em tempo real
- 🛠 Ferramentas Integradas: CLI, servidor de desenvolvimento, e sistema de build
- 🔌 Integração Spring: Trabalha perfeitamente com Spring Boot
- 📱 PWA Ready: Suporte nativo para Progressive Web Apps
- Java 17 ou superior
- Maven 3.6+
- Docker (opcional)
- Instale o CLI do Nicotine:
curl -sL https://get.nicotine.dev | bash
- Crie um novo projeto:
nicotine new meu-projeto
cd meu-projeto
- Inicie o servidor de desenvolvimento:
nicotine serve
Acesse http://localhost:3000
para ver sua aplicação rodando.
@Component(selector = "app-hello")
public class HelloComponent extends NicotineComponent {
private String message = "Hello, Nicotine!";
@OnInit
public void initialize() {
setState("message", message);
}
@Override
protected String template() {
return """
<div>
<h1>{{message}}</h1>
<button @click="updateMessage()">Click me</button>
</div>
""";
}
private void updateMessage() {
message = "Button clicked!";
setState("message", message);
}
}
@Service
public class UserService {
@Inject
private HttpClient http;
public CompletableFuture<List<User>> getUsers() {
return http.get("/api/users", User[].class)
.thenApply(Arrays::asList);
}
}
@Page(route = "/users/:id")
public class UserDetailPage extends NicotineComponent {
@Inject
private UserService userService;
@RouteParam
private String id;
@OnInit
public void initialize() {
userService.getUser(id)
.thenAccept(user -> setState("user", user));
}
}
nicotine build
Os arquivos otimizados serão gerados na pasta dist/
.
docker build -t minha-app .
docker run -p 8080:8080 minha-app
Adicione a dependência no pom.xml
:
<dependency>
<groupId>dev.nicotine</groupId>
<artifactId>nicotine-spring-boot-starter</artifactId>
<version>1.0.0</version>
</dependency>
Configure no Spring:
@Configuration
public class NicotineConfig {
@Bean
public NicotineViewResolver nicotineViewResolver() {
return new NicotineViewResolver();
}
}
Documentação completa disponível em docs.nicotine.dev
nicotine new [nome]
- Cria novo projetonicotine serve
- Inicia servidor de desenvolvimentonicotine build
- Build para produçãonicotine generate component [nome]
- Gera novo componentenicotine generate service [nome]
- Gera novo serviçonicotine test
- Executa testesnicotine deploy
- Deploy para produção
Benchmarks comparativos (Tempo de carregamento inicial):
- ⚡ Nicotine: 1.2s
🅰️ Angular: 2.8s- ⚛️ React: 2.1s
- Fork o projeto
- Crie sua Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature'
) - Push para a Branch (
git push origin feature/AmazingFeature
) - Abra um Pull Request
Este projeto está licenciado sob a MIT License - veja o arquivo LICENSE.md para detalhes.
- 📫 Email: [email protected]
- 💬 Chat: Discord
- 🐦 Twitter: @NicotineFramework
- Server-side rendering
- Microfront-ends support
- Native mobile compilation
- GraphQL integration
- AI-powered development tools
Desenvolvido com ☕ por Bullet