- Конференция
- Спикеры
- Стоимость
- Место
Евгений БорисовSpring Data? Да, та! Когда-то в Java всё было просто - заменил JDBC Driver на другой, и всё работает. Потом стало сложнее - заменил Hibernate на EclipseLink, но по большей части оно всё-ещё кое-как работает. А потом случился NoSQL. Что общего у MongoDB и Hadoop? Да ничего, кроме того, что они не-SQL. Достаточно ли этого, для того, что-бы написать фреймворк, энкапсулирующий детали их реализации? Именно на этот вопрос я попытаюсь ответить в своём докладе. У Spring Data, инструмента, призванного абстрагировать вас от конкетной реализации базы данных, обычная для такого рода фреймворков дилемма: покрывать наименьшее общее кратное, чтобы работало одинаково со всем, либо давать возможность работать с уникальным функционалом каждого инструмента и усложнить переход между ними. В этом докладе мы познакомимся со Spring Data на примере перехода между реляционной и несколькими нереляционными базами данных. |
|
|
Aleksey ShipilëvOracle java.lang.String Catechism Hardcore enterprise solutions, as well other products, normally deal with large amount of text data. Those applications spend considerable time and memory to mess with Strings. It had been repeatedly shown that optimizing String usages will almost always give the immediate performance boosts. This is not to mention dodging OutOfMemoryErrors and the like. In this talk, we will revisit the basic sins of working with Strings: gluttony of concatenation, wrath of substrings, greed of interning, pride of deduplication et cetera. We will also see the costs of sloth, believing JVM Almighty will do all the work for us. |
|
Андрей ПаньгинОдноклассники Лучший отладчик — сделанный своими руками Java разработчики привыкли: утекает память — запускай Eclipse Memory Analyzer, проблемы с производительностью — профилируй с YourKit. Но зачастую стандартных средств не хватает, например, когда ошибка проявляется только в production, куда и дебаггером не подключиться, и 10-гигабайтный heap dump не снять без перебоев в обслуживании. Сделать собственный инструмент, заточенный под конкретную проблему — легко! Порой даже быстрее, чем найти готовое решение в интернете. JDK включает богатый инструментарий для написания всевозможных средств отладки и мониторинга: JVMTI, Dynamic Attach Mechanism, Serviceability Agent, Instrumentation API и т.п. Мы научимся ими пользоваться, узнаем, как устроены изнутри jstack, jmap и jstat, и даже напишем подобную утилиту сами во время доклада. За основу примеров взяты случаи из практики в «Одноклассниках», а также реальные проблемы разработчиков, обсуждаемые на Stack Overflow. |
|
Markus EiseleRed Hat 50 Best Features of Java EE 7 The Java EE 7 platform has four new components (WebSocket, JSON-P, batch, and concurrency), three that are significantly updated (JAX-RS, JMS, and EL), and several others that bring significant changes to the platform. As you can imagine, a lot of new functionality has been introduced in the platform. In this fast-paced session, you will learn about 50 new features introduced in the Java EE 7 platform. @ClientEndpoint, chunk-style batch processing, @FlowScoped, @AroundConstruct, @JMSDestinationDefinition, and @Transactional are some of features the presentation covers. It explains each feature. |
|
Сергей КуксенкоOracle Железные счётчики на страже производительности Нередко при анализе производительности приложений приходится много копать. Но просто копать недостаточно, нужно еще разгребать накопанное. Железный век настал более 3000 лет назад, и было бы удивительно, если бы за это время человечество не создало кучу разнообразных железных приспособлений для копания и разгребания. В данном докладе мы узнаем, что же такое "Hardware Performance Counters", где их найти и как их можно использовать для анализа производительности. |
|
Олег АнастасьевОдноклассники За гранью NoSQL: NewSQL на Cassandra До недавнего времени в Одноклассниках около 50 ТБ данных, обрабатываемых в реальном времени, хранилось в Microsoft SQL Server. Многие знают, что для такого объема обеспечить быстрый и надежный, да еще и устойчивый к отказу ЦОД доступ, используя SQL СУБД, практически невозможно. Обычно в таких случаях используют одно из NoSQL хранилищ, но не всё можно перенести в NoSQL: некоторые сущности требуют гарантий ACID-транзакций. Это ограничение подвело нас к необходимости использования NewSQL хранилища, то есть СУБД, предоставляющей отказоустойчивость, масштабируемость и быстродействие NoSQL-систем, но при этом сохраняющей привычные для классических систем ACID-гарантии. Работающих промышленных систем этого нового класса немного (сразу приходит на ум только Google Spanner), а доступных — и вовсе нет. Поэтому мы реализовали такую систему сами на любимой нами Java и запустили ее в промышленную эксплуатацию несколько месяцев назад. Доклад про то, как устроено это хранилище будет интересен всем, кто следит за развитием технологий управления базами данных и имеет опыт работы с (No)SQL. |
|
Владимир ИвановOracle Future of Java: 9 and beyond Java 8 is out and Java 9 is actively ramping up. What are the plans for future releases? A number of experimental projects has been started recently to incubate advanced Java VM and Language feature candidates for future releases. Project Valhalla explores a new apporoach to generic typing, and hopes to produce a new form of generic typing that allows developers to use generic collections of primitive types. The other big feature currently proposed for Valhalla is value types. Project Panama will provide a native interconnect between code managed by the JVM and APIs for non-Java libraries. The primary goal of Project Sumatra is to enable Java applications to take advantage of graphics processing units (GPUs) and accelerated processing units (APUs) to improve performance. For each major feature, I'll give an overview, current status, and vision of the future development. |
|
Nitsan WakartAzul Systems The Illusion of Execution Contrary to our intuitions, the execution of our software is far from the continuous and sequential mental model we use when reading and writing code. In this talk we will discuss the gap between this model and the reality of the average Java application: - Placing the Java process in the stack: HW (real/virtual)/OS/Process - The other threads in your process - When the JVM stops (and the promise of a "pause free JVM") - Open to interpretation: from your code to assembly - The pause button: Safepoints in your code - Pointer accounting: store barriers and load barriers in your code |
|
Светлана ИсаковаJetBrains Простыми словами про вывод типов Что нужно знать разработчику о системе типов языка, на котором он пишет? От каких проблем спасают статические проверки, или что выбрать: статически типизированный язык или динамически типизированный? Локальный вывод типов (переменных) – скорее мешает или помогает? А глобальный? Каждый Java-разработчик сталкивается с выводом типов постоянно, но не все знают определения и задумываются, как все работает. Вывод типов (англ. Type inference) — это возможность компилятора самому логически вывести тип значения из выражения. Каждый раз, когда вы пишете, например, фильтрацию списка, компилятор решает систему уравнений. И если решения нет, то код не компилируется! В докладе мы поговорим про алгоритм вывода типов: что за система, откуда берутся неизвестные и ограничения на них. И, конечно, о том, почему иногда типы не сходятся. Если такие понятия, как типы, типовая безопасность, вывод типов, являются для вас buzzword'ами, то этот доклад развеет для вас туман и внесёт ясность, а так же упорядочить в голове концепты, которые постоянно на слуху. |
|
Алексей ШипилёвOracle <з>Java Benchmarking: как два таймстампа прочитать!Померить производительность - это так просто! Два раза по System.nanoTime(), взяли разность, сложили-поделили, и всё, можно оптимизировать. Как бы не так! В этом докладе мы поговорим о том, как исследуют производительность приложений при помощи бенчмарков, какие частые ошибки возникают, как с ними бороться, и как вообще получить хоть какие-то полезные данные о мире, где всё от всего зависит. Красной нитью в докладе проходит Java Microbenchmark Harness (JMH), стандартный инструмент для написания и исследования бенчмарков в OpenJDK. |
|
Владимир СитниковNetCracker Профайлер в каждый дом Случается, что код тормозит. Конечно, наш код идеален и проблема кроется в third-party библиотеках, но легче от этого не становится. Как понять причину медлительности? Как профилировать? Профилирование кода — это не просто «открыть профайлер», а процесс, позволяющий своевременно отлавливать неоптимальный код на этапе разработки, тестирования и работе в production. Для некоторых случаев и System.out/perf4j/poormansprofiler могут оказаться хорошим решением. Но что делать с жалобой QA: «Вчера работало медленно»? Что делать с заказчиком, который «уже обжёгся на профайлере X и не согласен его ставить»? Сколько времени разработчик потратит на анализ профиля, прежде чем найдёт упоминание интересного ему кода? В Java можно легко сделать собственный профайлер: Instrumentation API позволяет внедрить код в нужные классы, и переносимый байткод позволяет не задумываться о зоопарке платформ. В докладе мы рассмотрим, как эти возможности можно использовать для разработки собственного профайлера. Вы на примерах увидите, почему стандартные профайлеры могут не удовлетворять требованиям некоторых заказчиков, мы с вами напишем несложный профайлер, научим его писать журнал событий и посмотрим, какие ещё возможности можно использовать для более плотной интеграции профайлера с вашим решением. |
|
Maurice NaftalinMorningside Light Ltd. Is Your Code Parallel-Ready? The Stream API is set to become as important in the future as the Collections API is today. But to make good use of it, we have to understand the basis of its design in the idea of “parallel-ready code,” how that idea leads to the new idioms of the Stream API, and how Collectors square the circle that combines parallel execution with mutable data structures. This presentation ends with a practical payoff—it takes some typical collection processing problems and shows systematically how to choose the best stream processing solution for each. |
|
Михаил ДударевLicel USS «Enterprise» - сквозь черные дыры безопасности Java Web-контейнеровВ докладе будет затронуты следующие темы: - Основные типы атак на Web-приложения и контейнеры; - OWASP для web-контейнеров; - Немного об SSL и Java Cryptography; - Apache Tomcat - иследуем текущие и прошлые уязвимости; - Коммандер Спок рекомендует - как сделать ваш Java Web приложение и сервер безопасным. |
|
Николай АлименковXP Injection Прикладная многопоточность Любой Java-разработчик знает, что многопоточность — это зло, и что писать корректный многопоточный код сложно, а работает он совсем не всегда так быстро, как ожидаешь. Но какие задачи возникают в реальной коммерческой разработке помимо запуска асинхронного выполнения кода? В этом докладе я представлю несколько задач, с которыми мы столкнулись в своем проекте, и решения, к которым мы пришли. Доклад носит прикладной характер и поможет вам расширить кругозор в многопоточной разработке. |
|
Роман ЕлизаровDevexperts Почему GC съедает все моё CPU? Что делать, если GC потребляет существенную долю ресурсов системы, но профилировщик CPU не показывает узких мест в приложении, а в снимке памяти активных объектов нет ничего необычного? Как такое может быть? Ответ на вопрос, вынесенный в заголовок, очевиден – где-то в приложении выделяется очень много ненужных объектов, которые живут не долго и сразу уходят в мусор. Особенность заключается в том, что выделение памяти происходит очень быстро и не заметно в общей картине потребления CPU. В итоге, во время сборки мусора информация о виновнике, то есть, о том месте в коде, которое собственно выделено этот мусор, уже потеряна. Как же найти эти места в большом приложении? Для решения этой задачи нами в Devexperts был создан специальный инструмент – AProf. Он позволяет учитывать каждое выделение памяти в коде Java-приложения и запоминать достаточно контекстных данных, чтобы, с одной стороны, можно было найти виновника, а, с другой, делать это на целевой, нагруженной платформе, без заметного её замедления. Из доклада вы узнаете не только о том, как с помощью AProf найти все места в коде вашего приложения, которые создают избыточный мусор, но и о том, как AProf устроен. |
|
Volker SimonisSAP Open Heart Surgery: HotSpot Debugging at the OS Level Debugging Java applications is comfortable and simple, but if you want to look beyond the Java horizon, you need special knowledge and and different tools. This interactive session shows you how to debug a running VM or analyze a VM core file with a native debugger. You will also learn how to use some of the more than 1,200 VM options to trace or modify the VM behavior. This knowledge can greatly help you identify, isolate and reproduce the root cause of hard VM crashes, and it can also be pure fun to see which actual machine instruction the CPU is executing for your Java code. |
|
Николай ЧашниковJetBrains Писать код быстрее, ошибаться реже: возможно ли это? Все программисты хотят делать меньше ошибок в программах. Если же ошибки случаются, хочется про них узнать пораньше: не обнаружить в готовом продукте, а поймать при помощи юнит-тестов, ещё лучше — найти при компиляции, а в идеале — увидеть прямо при наборе кода. В этом могут помочь статические анализаторы кода. Одни из них встроены в IDE, другие надо настраивать дополнительно, для проверок третьих придётся аннотировать код. Стоит ли результат затраченных усилий? Какие ошибки можно найти таким способом? Не потонут ли сообщения о реальных проблемах в потоке ложных срабатываний? Об этом и поговорим на докладе. |
|
Глеб СмирновDeutsche Bank HotSpot, что ты делаешь?! Ахаха, прекрати! Большинство разработчиков время от времени сталкиваются с проблемами, которые для них новы. Для решения иногда достаточно прочитать документацию. Иногда ответ можно найти в интернете, иногда спросить у кого-то, кто уже знает. Порой это не помогает, и приходится копать самостоятельно. Нередко раскопки доходят до уровня JVM, и от этого у кого-то могут опуститься руки. Но ведь HotSpot — это не загадочная шайтан-машина, а что-то, у чего открыт исходный код! Всё поведение JVM, кажущееся поначалу странным, можно объяснить и научиться воспроизводить, нужно просто копнуть ещё немного глубже. Доклад окунёт слушателей в увлекательный мир исходников JVM и разберёт несколько "необычных" ситуаций, с которыми может столкнуться разработчик. |
|
Иван КрыловAzul Systems Оптимизация представления сложных Java-объектов: проект ObjectLayout Я расскажу о том, что предоставляют из себя Java-объекты и структуры объектов в памяти, и о том, как перемещение и упаковка объектов в памяти влияют на производительность. Я представлю новый пакет классов Java, который имеют гарантированное взаимоположение классов в пямяти, что позволит достичь производительности «как в программах на С». Для эффективной работы данных классов потребовались новые примитивные типы в JVM, модификация алгоритмов GC, а также новые интринсики. Развитие данных классов позволит в будущем переписать некоторые стандартные коллекции в JDK. |
|
Marcus LagergrenOracle OS/JVM dialectic – ending the struggle through unity The JVM is an interesting beast, being a runtime and a virtual machine it shares a lot of its behavior with the operating system beneath it. It has concepts like threads, a heap for object allocation and code execution in sandboxed environment. The JVM uses resources from the operating system to implement its functionality, but as noted it also looks a lot like the operating system itself. Sometimes it’s useful that the operating system is beneath the JVM – we can, for example, use operating system thread directly. Other times, however, this is not a good thing. We want the same control of the machine in userland from the JVM as the OS has only in kernel land. This has led to the boundary between the OS and the JVM becoming blurry. A JVM is basically just an operating system that does one thing – run Java. We will cover practical examples from the past of meta-virtual machines and also discuss projects like the (now dead) hypervisor only JRockit VE OS as an example of strange hybrids and explain what can be gained from them. We’ll talk about threads, locks, and I/O implementation from a JVM and an OS perspective. The talk also contains a historical retrospective on virtual machines and operating system interaction that stretches back to the seventies. We’ll make educated guesses about where the future is heading. |
|
Алексей РагозинDeutsche Bank Структуры данных в Java, изобретаем заново Все мы хорошо знаем стандартную библиотеку коллекций Java. Для большинства задач её возможностей вполне достаточно, но если ваша цель — создание базы данных или специализированного поискового индекса, то вполне возможно, что вам придётся искать альтернативы стандартным коллекциям. В этом докладе я хочу рассказать о своём опыте работы с существующими библиотеками коллекций и написания собственных. - Стандартные коллекции Java - что можно улучшить? - Быстрые, компактные или много поточные - выбери любые два; - Troove, FastUtils, Colt и другие библиотеки коллекций с открытым кодом; - Масштабирование и производительность структур данных на современном железе. |
|
Никита ЛипскийExcelsior Ahead-of-time компиляция Ahead-of-time (AOT) компиляция, или статическая компиляция, существует для платформы .NET довольно давно, однако Java до сих пор не имеет стандартного AOT-компилятора. Некоторые программисты думают, что AOT-компилятор для Java может работать только для ограниченного подмножества Java приложений и не может быть применен в общем случае, другие думают, что AOT не нужен для Java, потому что есть JIT. Правда же состоит в том, что у Java есть AOT-компилятор с 2000 года как часть Excelsior JET JVM, полностью совместимой с Java спецификацией. В этом докладе я попробую развеять мифы, которые сложились вокруг AOT-компиляции и показать, где (с технической точки зрения) этот подход имеет преимущества перед динамической компиляцией (JIT). |
|
Christoph Engelbert
|
|
Владимир КрасильщикLuxoft Мониторинг Java-приложения с многопроцессной архитектурой Вам случалось полдня разбираться почему не проходит интеграционный тест и обнаружить, что один из Java-процессов Вашего приложения, находясь под нагрузочным тестированием, которое проводил коллега напротив Вас, так усиленно писал логи, что забил все свободное дисковое пространство, что в свою очередь, не позволяло другому Java-процессу этого приложения открыть сокет? Или в Вашей команде более 20 server-side Java-девелоперов, а архитектура Вашего “Ынтерпрайза” со стороны напоминает гигантский клубок нейронов и аксонов? В общем, если Вы работаете на действительно большом проекте, многочисленные компоненты которого активно взаимодействуют друг с другом и при этом разрабатываются разными командами, то Вы относитесь к одному из двух типов людей: либо Вы мониторите состояния компонентов и окружений, на которых эти компоненты развернуты, либо Вы будете их мониторить. Потому что без мониторинга Вы потратите кучу времени на выявление и устранение неприятных инфраструктурных и интеграционных проблем, вместо того чтобы писать чистый и совершенный Java-код. В своём докладе я пройдусь по плюсам и минусам принципа single responsibility в server-side архитектуре, расскажу про типичные проблемы своего текущего проекта и поделюсь рабочими рецептами против паранои бесконечной и болезненной межкомпонентной интеграции. Также будет представлен краткий обзор продуктов основных игроков в сфере мониторинга, таких как hyperic, nagios, appdynamic или newrelic, подходящих для использования как специалистами DevOps, так и Java-программистами. |
|
Александр Белокрылов
|
|
Nicolas Frankelhybris Testing from the Trenches When one uses Test-Driven Development, has more then 90% test coverage and the best Sonar metrics ever seen, and still finds regular bugs in his application, it is time for something more. Unit Testing is like testing a car's every nuts and bolts while Integration Testing is like leading it on a test drive: one cannot achieve high internal quality without the other. However, Integration Testing might seem very complex when put in place for the first several times; I have made many mistakes and have lost much time. In this presentation, I will present tools that helped me tremendously in Integration Testing, as well as proven tactics to get the best out of your tests. |
|
Барух Садогурский
|
|
Peter LawreyHigher Frequency Trading Ltd. Low level Java coding with examples from OpenHFT In limited cases, low level coding can really make a difference to the performance of your Java application. Which pieces are useful? How to hide these details for Java developers? When is using low level coding the only option? |
|
Евгений Борисов
|
|
Александр ПодхалюзинJetBrainsProductivity with Scala Scala — довольно сложный язык программирования и зачастую не очень понятно, с чего начинать его освоение. Часто люди упускают возможность с самого начала программировать на Scala эффективно. И причина именно в том, что люди всерьёз сосредоточены на языке и его возможностях, не замечая более простых вещей. Из этого доклада вы узнаете о том, какие практики и инструменты могут быть использованы при обучении и дальнейшем программировании на Scala. Мы рассмотрим Scala Worksheet и его прикладное использование. Также посмотрим на распространенные ошибки в Scala коде. Рассказ будет сопровождаться небольшим введением в язык, поэтому знания Scala вам не требуется. Ближе к концу доклада мы рассмотрим возможные рефакторинги языка Scala, и инструменты для дебага implicits. Всё это поможет желающим освоить Scala научится осваивать его быстрее и эффективнее, а уже продвинутым программистам на Scala научится эффективнее использовать всю мощь языка. |
|
Алексей ШевчукОдноклассники Подходы к решению проблем производительности высоконагруженых сервисов Приятно работать с системами которые работают быстро. Пока у системы мало пользователей и данных — всё просто. Но что, если вам "повезло" и к вам пришла нагрузка? Хотите узнать, какие проблемы с ресурсами и GC возникают у нагруженных приложений? А примеры решений? Как эффективно распараллелить запрос и от чего нужно защищаться? Как оценить, много ли мусора создают запросы? Что делать, чтобы приложение с хипом на 20GB как можно реже прерывалось на GC? Все эти проблемы мы решали, делая поиск в Одноклассниках. В итоге наша система обрабатывает тысячи запросов в секунду, делая для этого десятки тысяч подзапросов в индексы и за данными. В докладе будет мало чисто поисковой специфики: большинство времени будет посвящено разбору типичных проблем любых высоконагруженных систем. Будут даны конкретные рекомендации по их решению. |
|
Jaroslaw PalkaSymentis So you want to write another JVM language? In recent years we have seen explosion of languages which run on Java Virtual Machine. We also have seen existing languages getting their implementations being rewritten to JVM. With all of the above we have seen rapid development of tools like parsers, bytecode generators and such, even inside JVM we saw initiatives like Da Vinci Machine Project, which led to invoke dynamic in JDK 7 and recent development of Graal and Truffle projects. Is it really hard to write new programming language running on JVM? Even if you are not going to write your own I think it is worth to understand how your favorite language runs undercover, how early decisions can impact language extensibility and performance, what JVM itself and JVM ecosystem has to offer to language implementors. During the session I will try to get you familiar with options you have when choosing parsers and byte code manipulation libraries. which language implementation to consider, how to test and tune your "new baby". Will you be able after this session to develop new and shiny language, packed with killer features language? No. But for sure you will understand difference between lexers and parsers, how bytecode works, why invoke dynamic and Graal and Truffle are so important to the future of JVM platform. Will we have time to write simple, compiled language? |
|
Яков ЖдановGridGain От дисковой архитектуры к In-Memory Больше данных – больше время отклика: современным приложениям приходится обрабатывать постоянно растущие объемы информации, и поэтому на выполнение даже относительно простых операций с каждым днём требуется всё больше и больше времени. Как следствие, многие системы, будучи разработанными с использованием традиционных СУБД, практически исчерпали ресурсы для дальнейшего масштабирования. Если вам не понаслышке знакома подобная проблема или вам интересно узнать, как можно выполнить запрос вида «select avg(sum) from Orders» по сотням миллионов строк за время, не превышающее одной секунды, то этот материал для вас! Мы рассмотрим процесс миграции приложения с «диска» в «память». Речь ни в коем случае не идет о полном отказе от использования СУБД – она остается, как надежное персистентное хранилище, а ACID-транзакции и SQL-запросы будут полностью выполняться в памяти. Вы увидите, как с легкостью можно придать приложению способность масштабироваться на сотни машин, тем самым, сделав его хорошо адаптируемым к увеличению нагрузок. Доклад будет интересен всем, кто интересуется высоконагруженными системами и распределёнными вычислениями. |
|
Дмитрий ЛазаренкоJelastic Оптимизация работы JVM в облаке — миф или реальность? Производительность и цена - два основных направления, волнующих каждого, кто хостит приложение. Постоянный вопрос: как получить больше за меньшую цену? Мы в Jelastic научились настраивать JVM так, чтобы неиспользуемая память возвращалась обратно в операционную систему без негативного влияния на само приложение. Из доклада вы узнаете о результатах внедрения этого решения: - какие тесты мы проводили на разных GC для того, чтобы добиться автоматического масштабирования JVM; - какой набор параметров JVM обеспечивает возможность масштабирования JVM вниз; - какова архитектура и реализация модуля, который отвечает за возврат памяти обратно в ОС; - связь поведения JVM и гипервизора. Кроме того, вы научитесь демасштабировать VM и корректно обрабатывать пиковые нагрузки за счёт переноса приложений в облако. |
|
Алексей ЗиновьевТамтэк Java в качестве основного рабочего инструмента Data Scientist Часто мы можем слышать разговоры, что, мол, Java хороша для Enterprise или для Mobile, но вот прототип алгоритма придется писать на любимом Python или R. Верно ли, что Java уже не та и мало подходит для этого изящного мира ученых, которые переваривают кропотливо собранные вами данные? Правда ли, что на Java нет фреймвороков, сопоставимых по возможностям с пакетами R или NumPy для Python? Можно ли позволить тому парню с красным дипломом МГУ писать свой алгоритм в Matlab и Octave, ведь потом все «легко переписать в Java»? Если вы Java-разработчик высоконагруженных систем и у вас периодически накапливаются данные для анализа, если у вас уже настроен прекрасный кластер Hadoop, а данные ждут своего часа в MongoDB, Cassandra или Hbase, то вам наверняка хотелось бы воспользоваться инструментами для Data Mining, без особых усилий добавляя сервисы, анализирующие ваши данные. Из доклада вы узнаете о самых популярных фреймворках и IDE на Java для построения моделей при помощи методов Machine Learning, о вариантах встраивания этих решений в существующие системы. |