vaadin/hilla

GitHub: vaadin/hilla

Stars: 983 | Forks: 76

Hilla

The modern web framework for Java ![Latest Stable Version](https://img.shields.io/npm/v/@vaadin/hilla-frontend.svg) [![Releases](https://img.shields.io/maven-metadata/v?metadataUrl=https%3A%2F%2Frepo1.maven.org%2Fmaven2%2Fcom%2Fvaadin%2Fhilla%2Fmaven-metadata.xml)](https://github.com/vaadin/hilla/releases) [Website](https://vaadin.com/hilla) · [Docs](https://vaadin.com/docs/latest/hilla) · [Forum](https://vaadin.com/forum/c/hilla/18)
Hilla integrates a Spring Boot Java backend with a reactive TypeScript front end. It helps you build apps faster with type-safe server communication, included UI components, and integrated tooling. ## Simple type-safe server communication Hilla helps you access the backend easily with type-safe endpoints. `index.ts` // Type info is automatically generated based on Java import Person from 'Frontend/generated/com/vaadin/hilla/demo/entity/Person'; import { PersonService } from 'Frontend/generated/endpoints'; async function getPeopleWithPhoneNumber() { const people: Person[] = await PersonService.findAll(); // Compile error: The property is 'phone', not 'phoneNumber' return people.filter((person) => !!person.phoneNumber); } console.log('People with phone numbers: ', getPeopleWithPhoneNumber()); `PersonService.java` @BrowserCallable @AnonymousAllowed public class PersonService { private PersonRepository repository; public PersonService(PersonRepository repository) { this.repository = repository; } public @Nonnull List<@Nonnull Person> findAll() { return repository.findAll(); } } `Person.java` @Entity public class Person { @Id @GeneratedValue private Integer id; @Nonnull private String firstName; @Nonnull private String lastName; @Email @Nonnull private String email; @Nonnull private String phone; // getters, setters } Learn more at [vaadin.com/hilla](https://vaadin.com/hilla) ## Get started ### Development If you want to develop Hilla, you can clone the repo and run tests using the following commands: git clone https://github.com/vaadin/hilla.git npm install npm run build mvn clean spotless:apply install -DskipTests npm test mvn verify -Pproduction You need the following versions of SDKs and tools: - **Node.js**: `>= 22 LTS`, - **npm**: `>=10` (`package-lock.json` is of version 3) - **JDK**: `>=17` - **Maven**: `>=3` ### Testing changes locally Java modules are located in `./packages/java`. If you make changes to Java code and want to test them in a real application, you can set the Vaadin version to `SNAPSHOT` in the `pom.xml` of your application. This requires using the Vaadin pre-release repositories. Make sure to add the following to your `pom.xml`: vaadin-prereleases https://maven.vaadin.com/vaadin-prereleases true Vaadin Directory https://maven.vaadin.com/vaadin-addons false vaadin-prereleases https://maven.vaadin.com/vaadin-prereleases true TypeScript modules are located in `./packages/ts`. If you make changes to the TypeScript code, you can package your changes locally by running the following command in the modified package: npm run build && npm pack It will create a `.tgz` file in the package root. Then, in your application, you can install that package using the following command: npm install Remember to delete the line that points to the package in `package.json` when you are done testing. The next run will add back the corresponding default package. [![Validation](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/00fcb34bf0030218.svg)](https://github.com/vaadin/hilla/actions/workflows/validation.yml) [![codecov](https://codecov.io/gh/vaadin/hilla/branch/main/graph/badge.svg?token=PQMTMS8ECC)](https://codecov.io/gh/vaadin/hilla)
标签:域名枚举