From a modeling perspective, you can define a non-zero lowerbound and a default value, but only for DataTypes.
These default propagate through to the auto-generated Java code.
However, a very important EMF facility is the ability to load and save as XMI. The support for this requires loading to use the default constructor and then eSet each field. Therefore EMF-compatible Java models must support an at least transient state while many fields are ill-defined.
[I suppose a cleverer genmodel could analyze the defaults or a GenAnnotation and synthesize a parametered constructor. Then a cleverer XMILoad could find those elements in order to use the parametered constructor. But that's not the way it is today.]
I understand the need for parameter-less constructors. It is common not only in EMF but in other frameworks too.
However, even when defining a lower bound on an attribute, in practice in my code I still may end up with a half-created object. EMF will not actually be able to warn you about that. Is my understanding correct?
In this setting, will it thus make sense to somehow assign my object creation to a Builder and thus force the creation of new objects through the Builder?
EMF has extensive validation of implicit constraints such as multiplicities defined in the metamodel. In some cases there is even live validation so that reports appear fairly rapidly. If you find something that EMF should validate and doesn't raise a Bugzilla.
You can add your own constraints that will be treated in a similar fashion. This may be done directly in Java, or in Xbase using Xcore or in OCL using OCLinEcore.
You may use the EMF Diagnostician to perform validation under your own programmatic control, or Validate menu options interactively.