.NET метаданные были, я полагаю, введены в .NET 1.1, который был выпущен 3 апреля 2003 года (похоже, что они уже были до этого?). Аннотации Java были предложены как JSR-175 19 марта 2002 года, который был одобрен 30 сентября 2004 года и стал частью Java SE 5.0, который был выпущен в тот же день.
Неясно, когда именно были предложены метаданные .NET, но если говорить о первом выпуске, то .NET выигрывает.
Я считаю, что они были первыми с .NET; за ним последовала Java 5.
Java, к сожалению, отстает от кривой улучшения языка, несмотря на {{1 }} тот факт, что это был язык C #, который был смоделирован после.
Комментарий Пьерретена верен, но я думаю, что есть несколько факторов, которые его объясняют:
(Эрик Липперт покинул Microsoft в январе 2013 года , чтобы присоединиться к Coverity.)
Атрибуты были частью среды CLR с момента ее создания. У меня есть старая предварительная спецификация C #, распечатанная с ноября 1999 года, в которой они описаны, но самая ранняя ссылка, которую я могу найти, - это спецификация C # 1.0 от 2001 года . Очевидно, это произошло за несколько лет до того, как эта функция была добавлена в Java.
РЕДАКТИРОВАТЬ: Книга Программирование на C # с общедоступной бета-версией была опубликована в 2000 году и упоминает атрибуты.