Реализация C# для JVM

Вы можете использовать Stream ваших панелей контента и вызывать setBackground с forEach, как; массив; возможно как

JPanel[] panels = new JPanel[] { contentPane1, contentPane2, contentPane3, 
        contentPane4, contentPane5, contentPane6, contentPane7, 
        contentPane8, contentPane9, contentPane10
};
Arrays.stream(panels).forEach(p -> p.setBackground(Color.PINK));
88
задан Rob 25 March 2009 в 17:31
поделиться

4 ответа

Существуют очень существенные различия между CLR и JVM.

Несколько примеров:

  • Java не имеет пользовательских типов значения
  • Дженерики Java полностью отличаются от дженериков.NET
  • Много аспектов C# зависят от элементов платформы - делегаты и т.д. Необходимо было бы портировать библиотеку также, даже для аспектов языка.
  • Java не поддерживает вещи как свойства и события на уровне JVM. Вы могли фальсифицировать часть этого, но это не будет то же.
  • Я не полагаю, что Java имеет любой эквивалент передаче параметрами ссылки, даже на уровне JVM
  • Тонкость, чтобы сделать с различными моделями памяти вполне возможно укусила бы, хотя я не уверен, сколько находится в спецификации C#.
  • Небезопасный код в целом, вероятно, не возможен в Java
  • Совместимость с собственным кодом очень отличается между JNI и P/Invoke. Это, вероятно, не большая часть проблемы для Вас.
  • Необходимо было бы фальсифицировать перегрузку оператора и пользовательские преобразования

Вы могли, вероятно, портировать много C# - но Вас оставят с довольно неудовлетворительным опытом, IMO.

При хождении другим путем Вы знаете о IKVM? Это позволяет Вам выполнять код Java в.NET.

90
ответ дан Jon Skeet 24 November 2019 в 07:33
поделиться

Могло бы быть более просто записать преобразователь от IL до байт-кода. Тем путем Вы автоматически получили бы поддержку любого языка.NET на JVM.

Однако это - такая очевидная идея, что, если это не было уже сделано, это, вероятно, чрезвычайно твердо, или трудно сделать хорошо/полезно.

9
ответ дан Daniel Earwicker 24 November 2019 в 07:33
поделиться

Взгляд на Кузнечика. Это - основанный на Visual Studio SDK и запатентовало.NET к преобразователю Java, который позволяет Вам запустить веб-приложения.NET и серверные приложения на Linux® и других поддерживающих Java платформах.

7
ответ дан alex 24 November 2019 в 07:33
поделиться

Посетите http://code.google.com/p/stab-language

Код ниже, если код языка Stab для JVM

using java.lang;
using stab.query;
public class Test {
   public static void main(String[] args) {
   // Sorts the arguments starting with "-" by length and then using the default   
        // string comparison
        var query = from s in Query.asIterable(args)
                    where s.startsWith("-")
                    orderby s.length(), s
                    select s;
        foreach (var s in query) {
            System.out.println(s);
        }
    }
}
41
ответ дан 24 November 2019 в 07:33
поделиться