Mephistopheles
> Это же просто функции.
Ну то есть нет.
Что с событиями, тоже нет?
> > такого нет, это решается аннотациями в одно слово
> угу ломбок по сути стандартная библиотека.
напишите кодом пример того ,что имеете введу ...
неужели так сложно ввести в язык грамотных конструкций? Поэтому он и гниет ...
tac
> Ну то есть нет.
гетеры и сетеры есть в любом ооп языке
tac
> Что с событиями, тоже нет?
и события есть. Ты с луны упал что ли?
tac
> неужели так сложно ввести в язык грамотных конструкций?
каких конструкций? тебе спец синтаксис под каждый шаблон нужен?
tac
> Поэтому он и гниет ...
да ничего там не гниет, все цветет и развивается:)
tac
> напишите кодом пример того ,что имеете введу ...
@Getter @Setter public class Author { private int id; private String name; @Setter(AccessLevel.PROTECTED) private String surname; }
в шарпе это вроде директивы называется.
Mephistopheles
> в шарпе это вроде директивы называется
Это бредом называется ...
Аналог этого какой?
public class A { public event Change OnChangeId; private int id; public int Id { get {return id;} set { if (id != value) { if (OnChangeId != null) {OnChangeId();} } id = value; } } }
tac
> Это бредом называется ...
Может и так, я терминологию шарпа плохо помню
tac
> Аналог этого какой?
Вот полный аналог
class A { public final Change onChangeId; private int id; public A() { onChangeId = new Change(); } public int getId() { return id; } public void setId(int id) { if (this.id != id) { this.id = id; onChangeId.notify(); } } }
Mephistopheles
> Вот полный аналог
чтд, свойств нет, событий нет, заменяется все 3-х этажными конструкциями функций и новых классов. Не язык, а старое д..мо.
tac
> чтд, свойств нет, событий нет,
а чем тебе не свойства и события? они ровно такие же
tac
> заменяется все 3-х этажными конструкциями функций
та столькоже строчек что и в твоем примере
tac
> и новых классов.
каких новых классов?
Честно говоря я был более высокого мнения о яве...
Даже в моей любимой второй макаке есть сеттеры и геттеры...
Class Test Private Field id:Int Public Property id:Int() Return id Setter( id:Int ) Self.id=id End End
Ну или как вариант:
Class Test Private Field id:Int Public Property id( id:Int ) Self.id=id Getter:Int() Return id End End
Отстой все эти ваши египетские скобки! Они только читабельность кода ломают!
И что в яве нет событий на уровне языка?
то ли дело си-плюс-плюс
https://www.codeproject.com/Articles/1256352/CppEvent-How-to-Impl… g-Standard-Cp
mingw
> И что в яве нет событий на уровне языка?
сахара нету да. А события в стандантной либе еще с 6 версии точно есть. Ну и 3 либы для всевозможных вариантов событий так же гдето с 6 версии существуют.
mingw
> есть сеттеры и геттеры...
да какая разница функция это или сахар для функции или аннотация?) это все свойства как не крути.
Mephistopheles
> да какая разница функция это или сахар для функции
Это не позволяет превратить поле в свойство, т.е. отсутствие инкапсуляции для данных.
tac
> Это не позволяет превратить поле в свойство, т.е. отсутствие инкапсуляции для данных.
чиво? у тебя поле приватное куда уж инкапсулированнее.
tac
> Это не позволяет превратить поле в свойство
Ты, вроде, уже несколько лет программируешь, а перлами до сих пор сыпешь как из рога изобилия. Удивлён.
mingw
> И что в яве нет событий на уровне языка?
нет
#!
> то ли дело си-плюс-плюс
в с++ нет событий, их тоже надо писать самому. И корутин там тоже нет, но добавили в новых версиях с++. И рефлексии тоже нет в с++, но добавили в новых версиях c++. А ещё в с++ нет интерфейсов, от слова совсем, есть лишь абстрактные классы которые также есть в Java, но в Java есть и интерфейсы. (в c# они тоже есть, java всё таки ближе к нему по синтаксису). Но в Java нет структур, там для этого используются классы.
Java превосходный язык программирования не требующий большего, жаль там нет auto (c++) или var (js) или просто имя переменной (python), но там можно писать общий тип без указания типов ключей и значений, типо вместо HashMap<int, String> писать просто HashMap hm = getHashMap()
libGDX пусть и не содержит встроенного редактора (полно внешних), постоянно развивается, умеет работать с 3д анимированными моделями. То есть само 3д есть, но всякие шейдеры тени, ssao и прочее придётся взять у кого то с инета. Он хорош как для 2д, так и для 3д и пахнет старыми красками (HL1, Дальнобойщики1).
за счёт того что java работает под JVM, он может работать с рефлексией, поле любой доступности превращать в публичный. За счёт хуков (трансформеров) - возможность дописывать, изменять старый код новым. То есть автор игры может давно забросил код, а ты можешь взять и выпустить дополнение к игре.
Кроме того есть Kotlin, Scala, которые переводятся из Java кода в необходимый за счёт Intellij IDEA прямо на ходу.
ЗЫ: если ты сам написал публичный доступ к внутренней переменной и написал публичный метод для её установки - это и есть инкапсуляция. И за счёт волшебных слов по шаблону или по клику, IDE создаст их автоматически.
Java раньше была доступна каждому, сейчас только по регистрации. Это случилось на Java 8 и вызвало отторжения сообщества. И только лишь поэтому перспективные проекты решили не рисковать переведя свои проекты на другие языки. Сейчас для всех привычно что то скачивать только после регистрации и уже нет каких то предьяв к Java. Забыли старые обиды, а кто то и вовсе о них не знает.
Это самый лучший ЯП из тех с которыми я знаком. Он покрывает все задачи начиная от устройств ARM и заканчивая, сайтами, приложениями, Android устройствами, отдельными клиентами и серверами, и даже полноценными 3д проектами по типу Minecraft который используется LWJGL (с поддержкой Vulkan) и наследник (фреймворк, солянка из физ. движка, библиотеки шрифтов, звук и т.д.) которого является libGDX. Но графической части там нет, поэтому эта часть целиком в твоих руках, как захочешь и на сколько хватит сил, так и будет.
А новые версии Java 18 и выше дали такую свободу, что там без бутылки уже не разберешьcя, слишком много они всего добавили. Как и у c# 13.
И помните, игровые движки слишком тяжелые чтобы каждый раз иметь поддержку последний версий языка, а значит писать придётся на старых версиях.
Alastor-X
Если решил делать игру на Java, то выбор платофрм у тебя небольшой. Сразу забудь про любые приставки. Под десктоп игры в экосистеме Java есть библиотеки (тот же LWJGL о котором писали выше), но мало, а то что есть - бедно на функционал (очень многое придется дописывать руками). Можно глянуть в сторону Android, но там сейчас правит балом Kotlin, а Java присутствует лишь как легаси. Единственный более-менее нормальный вариант - небольшие онлайн игры, где на Java пишется бек, а клиент на чем-нибудь другом.
Salamandr
> Java превосходный язык программирования не требующий большего
сейчас это скорее сервера для ММО или для мобилок
хотя были времена, ИИ делали на яве пока питон не перехватил пальму
Ил2 тоже на яве
да чего скрывать, Space Haven, практически игра мечты (жаль replayability не завезли) как раз на libGDX