Objective-C используется только для разработки на Mac OS / iPhone? [закрыто]

Вы можете получить каждое имя таблицы в своем проекте с помощью этой функции:

public Set<String> getTablesName() {
    Set<String> names = new HashSet<>();
    SessionFactory sessionFactory = emf.unwrap(SessionFactory.class);

    Map<String, ClassMetadata> classMetadataMap = sessionFactory.getAllClassMetadata();
    for (ClassMetadata classMetadata : classMetadataMap.values()) {
        AbstractEntityPersister aep = (AbstractEntityPersister) classMetadata;
        String tableName = aep.getTableName();
        if (StringUtils.isBlank(tableName) || StringUtils.containsWhitespace(tableName)) {
            continue;
        }
        names.add(tableName);
    }
    return names;
}
23
задан Kevin Reid 15 September 2014 в 22:29
поделиться

7 ответов

Я думаю, что ObjC был изолирован от мира Apple благодаря причуде истории и природе проприетарных систем.

Во-первых, вам нужно отделить ObjC от Cocoa. ObjC - очень примитивный язык. Я думаю, что это очень элегантный язык, но он чрезвычайно прост. Вы можете реализовать ObjCv1 в препроцессоре C. C ++ и ObjC были разработаны примерно в одно время. C ++ создал огромную инфраструктуру, чтобы придать синтаксис C-подобный тому, что по сути является совершенно другим языком. ObjC привнес в C синтаксис, похожий на Smalltalk, и практически ничего другого. Даже такие вещи, как + alloc и -release , не являются языковыми элементами ObjC. Это довольно простые обертки вокруг malloc () и free () . * Сам по себе ObjC не является На самом деле это интересно (насколько я думаю, элегантно). Это очень похоже на Smalltalk. Без библиотек объектов вы мало что сможете сделать. Благодаря своим объектным библиотекам он невероятно мощный.

NeXT предоставил всю эту структуру поверх ObjC под названием NeXTSTEP. Поскольку компьютер NeXT не имел широкого коммерческого успеха, а NeXTSTEP был проприетарным, не многие люди изучали структуру или основной язык. Когда Apple купила его и преобразовала в Cocoa, она продолжала оставаться проприетарной системой.

GNUStep существует, но они так и не разработали ничего достаточно интересного, чтобы привлечь множество разработчиков (крупный веб-браузер, текстовый процессор или подобное, аналогичное, похожее). И какао за последние несколько лет значительно опередил GNUStep. Возможно, что с ростом интереса к Cocoa из-за iPhone, что GNUStep может оживить и создать хорошую кроссплатформенную среду разработки, но я в этом сомневаюсь. Люди, имеющие опыт работы с C ++, смотрят на C # и видят явное улучшение. Когда они смотрят на ObjC, они видят множество квадратных скобок там, где они этого не ожидают. Для людей, выросших на парадигме «вызывающих методов», парадигма «передачи сообщений» в Smalltalk чужды и даже немного пугает. Многие разработчики полагают, что им нужен строго типизированный язык, чтобы избежать ошибок, и им неудобно работать с системой, которая полагается в первую очередь на дисциплину программиста и тщательную согласованность. Взломать то, что «просто работает» в C # намного проще, чем в ObjC. ObjC действительно ожидает, что разработчик будет намного лучше понимать, что происходит, и не будет полагаться на компилятор, чтобы защитить вас от ваших взломов.

В основном, люди знали C из Unix, и C ++ имеет смысл с точки зрения C, и Java имеет смысл с точки зрения C ++, а C # - это просто очищенная Java. ObjC не является ни одним из них. Это Smalltalk, и никто больше не изучает Smalltalk.

* Недавно я болтал с парнем, который написал + alloc о его истории, и он мог возражать против того, чтобы я назвал его простой оболочкой, учитывая то, что включение зон. Итак, если вы знаете разницу, замените здесь + alloc на + new .

и он мог бы возражать против того, чтобы я называл это простой оболочкой, учитывая включение зон. Итак, если вы знаете разницу, замените здесь + alloc на + new .

и он мог бы возражать против того, чтобы я называл это простой оболочкой, учитывая включение зон. Итак, если вы знаете разницу, замените здесь + alloc на + new .

39
ответ дан 28 November 2019 в 22:22
поделиться

Ну, есть также среда GNUStep, для которой некоторые люди все еще разрабатывают. Однако я не знаю, насколько активно это сообщество.

Но по большей части Objective-C теперь является языком Apple, о чем свидетельствует тот факт, что версия языка «2.0» была выпущена как часть OSX 10.5 и, кажется, была чисто внутренней разработкой. в Apple.

Редактировать: Apple, как вы, наверное, знаете, имеет нечто, называемое инфраструктурой Какао, которая в основном относится ко всему стеку библиотек для Objective-C, включая общий базовый класс NSObject. Какао является продолжением библиотеки NextStep, GNUStep которой является версией с открытым исходным кодом. Таким образом, вы найдете много классов с префиксом NS в обоих местах, но Apple не сдерживает добавление новых классов или их изменение в Какао, поэтому совместимость на уровне графического интерфейса на самом деле является только теоретической возможностью.

16
ответ дан harms 15 September 2014 в 22:29
поделиться

Я думаю, что реализация Apple просто лучше поддерживается и все еще находится в активной разработке. Есть и другие места, такие как GNUStep , но они все еще выглядят очень хорошо на уровне NextStep / OpenStep. К сожалению, с тех пор многое произошло!

1
ответ дан Stephen Darlington 15 September 2014 в 22:29
поделиться

GNUstep . Существует также Étoilé , которая представляет собой ОС, созданную с помощью GNUstep.

Я думаю, что многим людям больше нравится C или C ++, и если бы они хотели более современный язык, они бы использовали C # или Java.

4
ответ дан 28 November 2019 в 22:22
поделиться

GNUstep на самом деле намного более активен, чем думает большинство людей, и за ним стоит следить. Нетрудно создавать приложения, которые работают в GNUstep и Cocoa (то есть потенциально в OSX, Win, Linux, BSD ...)

Эти ссылки определенно стоит проверить всем, кто интересуется данной темой:

http: / /www.gnu.org/software/gnustep/information/aboutGNUstep.html

http://etoileos.com/news/

http://www.nongnu.org/gap/

Тогда есть Cocotron, «проект с открытым исходным кодом, направленный на реализацию кроссплатформенного API Objective-C, подобного тому, который описан в документации Apple Inc. по Cocoa»:

http://www.cocotron.org/

EDIT : Пример коммерческого кроссплатформенного продукта, созданного с помощью GNUstep, можно найти в Eggplant .

6
ответ дан 28 November 2019 в 22:22
поделиться

Команда Mono делает что-то при разработке для iPhone, что позволяет писать приложения для iPhone на .NET и кросс-компиляцию с компилятором (-ами) Mono .NET. Проверьте это на http://www.mono-project.com/Mono:Iphone

В последнем подкасте .NET Rocks есть Рори Блайт , говорящий о том, что он занимался разработкой объекта C и iPhone.

1
ответ дан 28 November 2019 в 22:22
поделиться

@Stephen: Я постоянно удивляюсь, как люди никогда не читают наш веб-сайт и даже не проверяют, как продвигается проект, прежде чем говорить такие вещи. :) GNUstep сейчас внимательно следует за Cocoa, и на данный момент мы намного больше, чем OpenStep. Если вы или другие хотите иметь реальное мнение по этому поводу, получите GNUstep от SVN, установите его и попробуйте. Понтификация о том, о чем вы ничего не знаете (как показывает ваш ответ здесь), бессмысленна.

Грег С. Ведущий разработчик GNUstep

11
ответ дан 28 November 2019 в 22:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: