Как уже упоминали другие, вполне возможно создать красивый кроссплатформенный графический интерфейс на Java как для Windows, так и для Mac. Однако, если вы хотите, чтобы ваше приложение сливалось и вело себя так, чтобы оно «ощущалось» как приложение, разработанное с нуля для платформы, на которой оно работает, вам действительно нужно разработать графический интерфейс и пользовательский интерфейс для каждой версии. приложение отдельно.
Если вы проанализируете, что собирается делать ваше приложение, и поймете, что существует значительная часть кода / логики, которая может быть разделена между платформами, то напишите эту часть переносимым способом на языке, который доступен в обеих системах. C, C ++, Java, Python, Ruby и т. Д. Если значительная часть отсутствует, т. Е. Большая часть кода предназначается для графического интерфейса, тогда меньше возможностей для совместного использования какого-либо кода.
В случае значительной части общего кода я бы предложил рассматривать Python и Ruby в качестве языков реализации, поскольку есть привязки Cocoa для этих языков на Mac и Windows с использованием IronPython и IronRuby, которые вы могли бы использовать. используйте повторно этот код в приложении .Net.