A good example of bloatware encouraged by a non-expressive language. Instead of adding a language feature that makes constructing any instance easier, in 2013 they're adding support for a builder on a single Calendar class.<p><pre><code> final Calendar calendar =
new Calendar.Builder()
.set(YEAR, 2013)
.set(MONTH, APRIL)
.set(DATE, 6)
.build();
</code></pre>
For a similar API in C# you could use named parameters:<p><pre><code> var calendar = new Calendar(year:2013, month:Month.April, date:6);
</code></pre>
or just set public properties in an object initializer:<p><pre><code> var calendar = new Calendar {
Year = 2013,
Month = Month.April,
Date = 6,
};
</code></pre>
Likewise in Dart with named parameters:<p><pre><code> var calendar = new Calendar(year:2013, month:APRIL, date:6);
</code></pre>
or using method cascades:<p><pre><code> var calendar = new Calendar()
..year = 2013
..month = APRIL
..date = 6;
</code></pre>
For C#, Dart you get this for free when constructing any object. Java requires creating the boilerplate of a builder for every class?? and with all that effort it's still more verbose.