Ну, то, что в Java нет MOP, нет этих самых traits (и нет множественного наследования чтоб их хоть как-то заменить). Зато Java любой даун понимает, а вот что такое MOP не каждому дауну возможно объяснить. Вывод - java rocks.
mixin - это Composite без ручного делегирования и возможно с ленивым связыванием компонентов
trait - это mixin без состояния, в чем-то похоже на Template Method
может, не самый хороший пример, - представь, что тебе нужно написать комплексный Swing component, который отображает некоторые данные и дает пользователю возможность их редактировать; что-то типа JSpinner, скажем. Тебе нужны как минимум: (1) динамический layout, (2) прием и валидация ввода, (3) синхронизация данных и визуального представления. Ты можешь реализовать каждую часть в отдельном trait'е и получить единый класс с нужной функциональностью + разделение кода вместо стандартной Swing'овской кучи специальных классов и мостов-интерфейсов.