Automatic properties are built upon properties.
Properties in C# are a language feature, in Java they are a convention (methods starting with get or set are often considered properties by people talking about the code, but to the compiler it's no different than foo or bar).
.NET and its associated languages where in many ways based upon COM (sometimes in following suit, sometimes in deliberately not doing something in COM that was for some reason or other unpopular).
COM has a concept of properties which in VB was backed by language features (in C++ it was backed by conventions).
Early versions of VB, especially in contexts where it was used to provide basic programmatic access to object models provided from elsewhere, aimed to simplify the object models presented to users to make the distinction between a field and a method that gets or sets (perhaps with additional work, perhaps not) unimportant (consider that while they differ in some important way from the outside in .NET, syntactically accessing a property and a public field is the same). When VB and COM (and before that OLE) grew up, they grew up together.
So in all, while C# shares a C/C++ inheritance with Java, it also has an inheritance that Java does not share, which made properties seem like a good idea to C#'s creators, but not to Java's.
Edit: At first I said:
Personally, I think automatic properties are really a workaround to a flaw in properties, rather than a way to simplify your code. Properties "look" like public fields syntactically, but aren't entirely (try using DataBinder.Eval
to retrieve a field). If a property was both fully public, and had no additional functionality in getter or setter (which is the case with automatic properties), I'd rather just have a public field (encapsulation is no argument here, as fully exposing it publicly by-passes that anyway), but the differences between fields and properties works against that.
I retract that statement. Making fields exactly like properties would require the fields of simple Plain-Old-Data structs to act like properties, which would be a performance loose. Conceptually, I'd like them to be more like each other, but whenever I think on it (and I've gone from being annoyed to going "oh wait" like here more than once), it's better as it is.