Avatar ·

O que é realmente um JavaBean? Explicação simples para iniciantes

Olá a todos! Comecei a estudar Java e constantemente me deparo com o termo "JavaBean". Até entendo que é algum tipo de classe, mas quando leio a documentação, fala sobre "componentes serializáveis com métodos getter/setter" e "containers de propriedades". Honestamente, parece mágica. \n\nEu tenho uma classe simples para armazenar dados do usuário:\n\n```java\npublic class User {\n public String name;\n public int age;\n}\n```\n\nPosso criar um objeto e acessar os campos diretamente. Por que preciso escrever getters e setters? Por que implementar Serializable? E o que são esses "beans"? \n\nVi que no Java Enterprise Edition e no Spring todos adoram esses JavaBeans, mas não entendo qual é a vantagem. Talvez seja apenas um conceito ultrapassado? Expliquem, por favor, em palavras simples, o que é um JavaBean, para que serve, e se é obrigatório seguir todas as regras se estou escrevendo uma aplicação comum, não um sistema corporativo.\n\nEstou especialmente interessado em:\n1. Por que os campos devem ser private?\n2. Para que serve o const