Подтвердить что ты не робот

Что должен знать разработчик Scala о Java и/или JVM?

Итак, примерно до 6 месяцев назад большая часть моей работы (большая обработка графа) состояла из Python и С++. До этого момента и даже сейчас я вообще не писал никакой Java. Я видел язык и был знаком с синтаксисом (пришедшим с фона C/С++), и мне понравилась идея JVM, но никогда фактически написал любое значительное количество Java.

Когда я подобрал Scala, мне понравилось, OOP и функциональные возможности программирования все в одном, и это было на JVM было здорово. Я постоянно стремился улучшить свой Scala и играл с Аккой и все еще люблю его. Тем не менее, порой, возможно, это просто я слишком недооцениваю его, но я чувствую, что должен узнать больше о Java и/или JVM.

Я слышал от многих, что Scala следует рассматривать как отдельный язык Java, как С++ to C. Возможно, вы можете чувствовать то же самое, и, возможно, изучение Java более или менее не связано с обучением Scala, но я чувствую, что узнал больше о JVM (например, компиляция JIT, стирание стилей) было бы полезно?

Мысли?

4b9b3361

Ответ 1

  • JVM выполняет Bytecode, и определенно полезно знать, как это работает, так же, как иногда полезно знать, как работают вызовы метода C/С++ или как инициализируются классы; потому что иногда это имеет значение и не может быть отвлечено.

  • Java является основным языком для JVM, и полезно иметь возможность читать Java до некоторой степени, если вам нужно напрямую использовать Java-классы. И это может произойти довольно часто; всего несколько примеров:

    • вам нужно использовать некоторую стороннюю библиотеку Java (и есть тонны)
    • Работа с Свойствами
    • вам нужно сделать что-то особенное в Swing, которое не поддерживается оболочкой Scala -Swing
    • также источники, объясняющие материал для 1), скорее всего, будут использовать примеры Java

Но мой совет - не изучать его заранее - вы подберете его, когда вам это понадобится.

Ответ 2

Купить эту книгу сейчас: Производительность Java. Он был выпущен только в октябре прошлого года и является сокровищницей информации для всех, кто хочет понять JVM. Если вы станете разработчиком Scala, вы должны, по крайней мере, понять параметры сборки мусора и JVM.

Ответ 3

Сверху моей головы

  • примитивы, автобоксинг и как специальные массивы java;

  • стирать и проявлять

  • как скомпилированы логически хвостовые рекурсивные вызовы в источнике scala

  • установка -client, -сервер на вашей платформе и когда вы хотите попробовать 32 бит: например. JAVA_HOME и "предпочтения Java" в OS X. Я думаю, что openJDK должен работать везде, где вы используете ту же версию Oracle JDK, но IntelliJ предупреждает вас использовать только официальный Oracle JDK. Я видел очень изолированные сообщения о том, что у 3d графических библиотек были проблемы с openJDK, а также части openJDK, такие как шрифты, имеют проблемы с лицензированием.

  • настройка классов классов в REPL, как опция компилятора, и в SBT

  • Переключатели Hotspot, XMX, XMS (настройки кучи), наиболее распространенные сборщики мусора, вызовы метода inlining

  • java.util.concurrent

  • возможные проблемы с двоичной совместимостью с кодом java и scala, скомпилированным в JDK 6 и 7.

Ответ 4

Я не знаю точно, что вам нужно, но на SO есть несколько похожих вопросов, посмотрите.

Кроме того, здесь хорошие статьи для модели памяти Java

Я подумал, что лучше копать на языке Java, писать код, читать книги, специфичные для Java, для лучшего понимания того, как все работает.

Ответ 5

Существует множество инструментов, связанных с JVM. Если вы хотите понять, как работают ваши программы (по производительности или по другим причинам), то стоит упомянуть их. Два полезных инструмента:

Оба они особенно полезны для мониторинга и опроса длительных процессов.

Ответ 6

Я думаю, что вы будете знать больше о JVM при программировании Scala. Я имею в виду, что у вас появятся дополнительные вопросы: "Почему это решение идет медленно и быстро?" - один из способов ответить на этот вопрос - проверить байт-код