Java — Java ee vs Java android


Содержание

Java — Java ee vs Java android

Краткое описание:
Работа с java

##О приложении
Этот проект создан для изучения и создания Java приложений на Android.
Вы можете создать и запустить Ява-приложение с JDK 1.7.

(НЕт оффициальной поддержки) Создайте apk-файл (поддержка только armeabi-v7a, x86, x86_64)

## Туториалы(Советы по использованию)
1. Настройте систему https://youtu.be/FZtSbgq8ZN0
2. Создайте файл при помощи библиотеки https://youtu.be/fUFqR8ZlChg
3. Создайте Android приложение https://youtu.be/euZilR8-EhA

##Внимание
Это бета версия,которая будет часто обновляться.

## Todo(. Оставлено по английски,иначе будет утрачен смысл.
1. Java compiler JDK 1.7 ✔
2. Java editor ✔
3. Java auto complete code ✔ (But not working perfect)
4. Java debugger (jdb).
5. Run java file, class file ✔
6. Build java library ✔
7. Support VCS
8. Decompile class, jar
9. Java code formatter (Google Java code formatter) ✔
10. Build Android app. ✔
11. XML auto complete
12. Layout builder for Android

## Что содержит проект?
1. Javac — Java compiler
2. Aapt — Android asset package tool
3. Dx — Dex for dalvik vm
4. Zip Signer
5. Apk сборщик

Это приложение бесплатно, потому что я хочу помочь людям изучать Java. Я работаю для людей. Если вы хотите поддержать проект нажмите на кнопку Донат в приложении.

## Overview
This project is develop to help the community learn java on android.
You can build and run Java file with JDK 1.7.

(No official support) Build apk file (only support armeabi-v7a, x86, x86_64)

##Attention
Because this is beta version so I will update very often.

## Todo
1. Java compiler JDK 1.7 ✔
2. Java editor ✔
3. Java auto complete code ✔ (But not working perfect)
4. Java debugger (jdb).
5. Run java file, class file ✔
6. Build java library ✔
7. Support VCS
8. Decompile class, jar
9. Java code formatter (Google Java code formatter) ✔
10. Build Android app. ✔
11. XML auto complete
12. Layout builder for Android

## What does tools the project include?
1. Javac — Java compiler
2. Aapt — Android asset package tool
3. Dx — Dex for dalvik vm
4. Zip Signer
5. Apk builder

## Contribute
I would absolutely love every possible kind of contributions. If you
have a questions, ideas, need help or want to propose a change just open
an issue. Pull request are greatly appreciated.

This app is free for everyone to learn Java. I work for the community. If you want to donate to the project, you can click donate button in the application.

Что перспективнее? Andro >13.01.2020, 19:00. Просмотров 2058. Ответов 6

13.01.2020, 19:00

Подскажите пожалуйста компилятор .java файлов на Android, или то, что может заменить JDK
Подскажите пожалуйста компилятор .java файлов на андроид, или то, что может заменить JDK. Заранее.

Xamarin or Java + Android SDK что выбрать?
Всем привет. Есть желание освоить мастерство разработки приложений под Андройд. Вопрос что лучше.

Почему каждый второй говорит что в android не совсем java?
Часто встречается такое мнение, можно ли считать спеца который пишет для android спецом java?

Что надо знать в java, чтобы хорошо программировать под android?
Всем привет. Подскажите пожалуйста какие технологии в java мне необходимо изучить что бы начать.

Что легче/перспективнее для изучения Java или Abap?
Здравствуйте! Для многих вопрос может показаться смешным. Я понимаю, что всё требует большого.

Java, Andro >

Насколько отличается Java, используемая в разработке приложений Android от Java, используемая для разработки обычных настольных приложений? Могу ли я использовать навыки, приобретенные при разработке приложений Java Android в веб-разработке Java EE?

Что такое Java ME?

Насколько отличается Java, используемая в разработке приложений Android от java, используемой для разработки обычных Java-приложений?

С точки зрения языка, почти идентичны.

Из пользовательского интерфейса API и точки жизненного цикла приложения почти полностью разные.

Могу ли я использовать навыки, приобретенные при разработке приложений Java Android в веб-разработке Java EE?

Да. Разумеется, ваши чистые «Java-навыки» пригодится. Но, как сказано выше, жизненный цикл приложения, например, полностью отличается от большинства других сценариев.

JavaME – это более старая техника, обычно используемая для телефонов без сенсорных экранов. Он определяет (по сравнению с Android) очень минимальный API и изначально был разработан для работы на очень ограниченных устройствах по сравнению с современными смартфонами.

Android, грубо говоря, JavaSE без некоторых более специализированных функций, таких как уровни безопасности (JSE и JAAS), графический интерфейс (AWT, Swing и Java2D).

API Android использует иерархию классов JavaME для OpenGL ES.

Поэтому, если вы знаете Android, вы можете легко перейти к разработке JavaSE.

JavaEE полагается на JavaSE, но речь идет о серверных приложениях, поэтому вам нужно будет узнать, как это работает. Ищите сервлеты, JSP и JSF, чтобы узнать больше об этом.

JavaME немного отличается от JavaSE. API JavaME меньше и менее мощный, чем JavaSE, и немного отличается.

Для Android Java – это язык программирования и некоторая базовая Java-библиотека

J2ME также является платформой для разработки мобильных приложений, поддерживаемой многими телефонами. Общим для Android и J2ME является только язык Java. Оба имеют разные термины для развития.

Веб: речь идет о целевой платформе и модели программирования. Java для Java предназначен для мобильной платформы разработки. Здесь apis, программный стек, концепции полностью отличаются от того, что существует для веб-разработки.


Ну, для разработки как для Android, Java ME, так и для Java EE базовая вещь, которую нужно знать, – это Java SE. Java ME стареет. Самый популярный штат для разработки в Java ME – это программное обеспечение для Blackberry. Разработка Java EE довольно сложна для изучения технологий, поскольку она фактически состоит из большого количества фреймворков и небольших технологий. Это сложно из-за многих вещей, но, безусловно, для его использования вы должны начать изучать Hibernate / JPA, Java SE, RMI и OOP. Тогда вы можете взглянуть на технологию Spring.

Java Tutorial Network

Java Tutorials for Beginners and Professionals

Spring vs. Java EE

At first, it was Java, and there was Java Community Process, the procedure in accordance to which all revisions take place, and new versions of Java itself and related specifications come out. For example – Java EE and its components.

I must say, JCP is still that clumsy and bureaucratized system. Moreover, it is built on democratic principles: individually, anyone can join the JCP for free. If to speak about companies, it is paid. Vote on all the essential and not so java related decisions.

Spring vs. Java EE

Java is a pioneer in a mass of different directions. So now, of course, it’s nice to scold JCP for a bunch of wrong decisions made. The problem is that at that time there was just no experience with such choices, and someone had to be the first. An example of such a wrong decision is the EJB 1.0 and 1.1 specifications, which were told gloomily in Wikipedia: “It was developed in 1997 by IBM and later in Sun Microsystems (EJB 1.0 and 1.1) in 1999.” In short, the guys from JCP did not know how to make large Enterprise projects (and no one at that time knew how to do it!). But here the guys from IBM (by the way – one of the executive committee of the JCP) came and said: “We know how to do it.” And in the non-transferable IBM style, they wrote a specification.

As a result, Java EE has its crucial element, which is EJB. However, EJB had its advantages: automatic, right out of the box, scalability by supporting application server clusters, again, authorization support from the table and, most importantly, it was the standard!

The result of the emergence of the first EJB were two things. First, the terrible HYIP in the java-world: “Now we will conquer the world. We have powerful EJBs! “Honestly, in those years there was a lot of hype in the Java world. In general, I want to note that if you have been in IT for more than ten years (and preferably 20), then you can see that the HYIPs are repeated with a precise cyclical nature. For example, modern HYIP on the Front-end is already the third. And I know exactly how it will end (a spoiler – a return to an ultra-thin client).

Now let us talk about Spring. Therefore, Spring was a small, beautiful, and enjoyable library. Yes, there were no annotations yet (they were added later – already in Java 5), ​​all configuration consisted in editing the XML file. However, it was alone! It had a simple and clear structure à la web.xml and compared to the horror of the Java EE configuration files of that time, and it was just a darling. It took quite some time, and the presence of Spring on the project has become merely mandatory.

Let us have a closer look at Spring and J2EE stacks. The request is processed by the JSF page and then by the bean. Management goes further into business logic in EJB, which works with the database through JPA. So far, everything is simple and clear. The most pleasant thing in this whole picture is that if the load on this application increases by several orders of magnitude, then its scheme will not change at all. The app will need to be installed only on a cluster of several powerful nodes, and everything will work in a cluster environment without any changes. If the power is still not enough, it is enough to add another node to the cluster – that’s enough.

It is because of this solution on the Java EE stack that I recommend to use in cases where the scaling issue for your application is the most critical.

A simple application on the Spring stack is not very different from Java EE. The only difference that should be voiced right away is that a Java EE application can work in general only within the Enterprise Application Server (I remind you that Tomcat is not), and a form on the Spring stack can work on anything (on the same Tomcat) and even without a server at all (as it will launch it inside itself). It makes Spring stack ideal for implementing elements of the microservice architecture but at the cost of not supporting all the capabilities of the application servers. In general, a cluster application is not about Spring, and the scaling for Spring applications should be addressed separately. In most cases – significantly more expensive.

I must say that JCP did not become jealous of the upstarts for success and selflessly began to squeeze support for Spring IoC into the Java EE stack. And everything was beautiful spinning. All those who wanted (to be honest – in general, everyone) used Spring IoC in their projects, not paying attention to what the plan was written on.

The JCP committee in the JSR 244 specification: The Java TM Platform, Enterprise Edition 5 (Java EE 5) defined a set of JSR specifications that are included in the Java EE platform. The task of the JCP committee is to issue specifications based on which the Open-Source communities, as well as commercial organisations, create implementations. The Spring Framework is not an implementation of the JSR specification and, therefore, is not included in the list of standard JEE technologies.

The Spring Framework is used to develop Java / Java EE applications, so it becomes part of the Java EE application but is not a Java EE technology.

Using, for example, the standard Java EE implementation of Enterprise JavaBeans (EJB) technology provided by the BEA WebLogic application server, you can transfer your application to the Apache Geronimo server, and thereby use the Apache EJB implementation, which may be more productive or not contain significant errors. If you use the Spring Framework, you always use one application from SpringSource during migration, and if it includes substantial errors or does not satisfy you with other criteria, you have either to correct the mistakes yourself, or look for workarounds, or abandon this framework.

Цукерберг рекомендует:  Отзывы о профессии SEO-специалист

This article only indicates the ideological flaw of the Spring Framework, as in practice, the Spring Framework is successfully used to develop applications of varying complexity. Also, with this article, I do not belittle the advantages of EJB technology, which can also be successfully used.

  • Do not try to make all the applications on anyone stack – they are intended a bit for different things. However, we must clearly understand why each of the stacks fits better. Simply put, Java EE – for an easily scalable monolithic application, Spring – for minimal applications with a GUI on the Front-end or microservice architecture.
  • Do not forget that AJAX is now essential. If you plan to make a severe application on SpringMVC + Thymeleaf – get ready to lose development time. Writing AJAX with your hands is painful. So either React / Angular (fashionable, beautiful, youthful!) or the old JSF + PrimeFaces. Not so cute, but also quite nothing and without Front-ender. Note that it is for back-office applications (any admins, etc.) that PrimeFaces and their counterparts offer an unlimited number of ready-made business components, such as calendars, color picks, time zones, and all that. You will significantly increase your development speed.
  • Your programmers may not know the Java EE stack. As my practice has shown, they learn it very quickly.
  • And last but not least. I think the pendulum that once brought Spring to the top can go back to Java EE and throw Spring down. I would not rule out such a possibility.

Java Language Различия между Java EE, Java SE, Java ME и JavaFX

пример

Технология Java — это язык программирования и платформа. Язык программирования Java — это высокоуровневый объектно-ориентированный язык с особым синтаксисом и стилем. Java-платформа — это особая среда, в которой работают приложения языка Java.

Существует несколько платформ Java. Многие разработчики, даже давние разработчики языка Java, не понимают, как разные платформы связаны друг с другом.

Языковые платформы Java

Существует четыре платформы языка программирования Java:

Платформа Java, стандартная версия (Java SE)

Платформа Java, Enterprise Edition (Java EE)

Java Platform, Micro Edition (Java ME)

Все платформы Java состоят из виртуальной машины Java (VM) и интерфейса прикладного программирования (API). Виртуальная машина Java — это программа для конкретной аппаратной и программной платформы, которая запускает приложения для Java-технологий. API представляет собой набор программных компонентов, которые можно использовать для создания других программных компонентов или приложений. Каждая платформа Java предоставляет виртуальную машину и API, что позволяет приложениям, написанным для этой платформы, работать на любой совместимой системе со всеми преимуществами языка программирования Java: независимость от платформы, мощность, стабильность, простота разработки и безопасность.

Java SE

Когда большинство людей думает о языке программирования Java, они думают о Java SE API. API Java SE обеспечивает основные функциональные возможности языка программирования Java. Он определяет все, от базовых типов и объектов языка программирования Java до классов высокого уровня, которые используются для создания сетей, обеспечения безопасности, доступа к базе данных, разработки графического интерфейса пользователя (GUI) и анализа XML.

В дополнение к основному API платформа Java SE состоит из виртуальной машины, средств разработки, технологий развертывания и других библиотек классов и наборов инструментов, обычно используемых в приложениях Java.

Java EE

Платформа Java EE построена поверх платформы Java SE. Платформа Java EE обеспечивает среду API и среду выполнения для разработки и запуска широкомасштабных многоуровневых, масштабируемых, надежных и безопасных сетевых приложений.

Java ME

Платформа Java ME предоставляет API и небольшую виртуальную машину для запуска приложений Java для программирования на небольших устройствах, таких как мобильные телефоны. API — это подмножество Java SE API, а также специальные библиотеки классов, полезные для разработки небольших приложений. Приложения Java ME часто являются клиентами служб платформы Java EE.

Java FX

Технология Java FX — это платформа для создания богатых интернет-приложений, написанных на Java FX ScriptTM. Java FX Script — это статически типизированный декларативный язык, который скомпилирован в байт-код Java-технологии, который затем может быть запущен на виртуальной машине Java. Приложения, написанные для платформы Java FX, могут включать и связываться с языковыми классами Java-программирования и могут быть клиентами служб платформы Java EE.


Java vs Java EE

Differences Between Java vs Java EE

Java is a programming language and also a computing platform. A platform is the hardware or software environment in which programs run. Java was developed by Sun Microsystems which was led by James Gosling.

Java has two components Java Virtual Machine and Application Programming Interface. Java is now available as free software under terms of GNU General Public License.

Web development, programming languages, Software testing & others

Installing Java on your system

As Java SE is freely available on Oracle’s website can be easily downloaded and installed on a machine. To check if Java is installed or not, run following command on Command Prompt

Java –version

It gives the version and other details of installed JDK software. Once Java is installed, the next step is to set Environment Variables. We need to provide the path where JDK is installed on our machine. This can be done in two ways

  • Right-click on MyComputer and select
  • Click on Advanced System Settings.
  • Click on new, add PATH as a variable name and give a physical path of the bin folder which is inside the installed JDK folder.
  • Open a command prompt.
  • Type command set PATH = %PATH;% Popular Course in this category
  • /* Comments */

The compiler ignores the comment block. Comment can be used anywhere in the program to add info about the program or code block, which will be helpful for developers to understand the existing code in the future easily.

  • public static void main

When the main method is declared public, it means that it can also be used by code outside of its class, due to which the main method is declared public. The word static used when we want to access a method without creating its object, as we call the main method, before creating any class objects. The word void indicates that a method does not return a value. main () is declared as void because it does not return a value. main is a method; this is a starting point of a Java program.

It is an array where each element of it is a string, which has been named as “args”. If your Java program is run through the console, you can pass the input parameter, and the main () method takes it as input.

This statement is used to print text on the screen as output, where a system is a predefined class, and out is an object of the PrintWriter class defined in the system. The method println prints the text on the screen with a new line. You can also use the print () method instead of the println() method. All Java statement ends with a semicolon.

  • public class Hello

This creates a class called Hello. All class names must start with a capital letter. The public word means that it is accessible from any other class.

The compiler ignores the comment block. Comment can be used anywhere in the program to add info about the program or code block, which will be helpful for developers to understand the existing code in the future easily.

  • public static void main

When the main method is declared public, it means that it can also be used by code outside of its class, due to which the main method is declared public. The word static used when we want to access a method without creating its object, as we call the main method, before creating any class objects. The word void indicates that a method does not return a value. main () is declared as void because it does not return a value. main is a method; this is a starting point of a Java program.

It is an array where each element of it is a string, which has been named as “args”. If your Java program is run through the console, you can pass the input parameter, and the main () method takes it as input.

This statement is used to print text on the screen as output, where a system is a predefined class, and out is an object of the PrintWriter class defined in the system. The method println prints the text on the screen with a new line. You can also use the print () method instead of the println() method. All Java statement ends with a semicolon.

Head to Head Comparison Between Java vs Java EE

Below Is The Top 6 Comparison Between Java vs Java EE

Key Differences Between Java vs Java EE

Below is the list of points describe the difference between Java and Java EE

  • Java SE is the core Java programming language. The Java EE platform is built on top of SE platform, used especially for large-scale applications.
  • SE defines everything from the basic types and objects of the Java programming language, hence provides all core functionalities. The Java EE platform provides an API and runtime environment for developing and running large-scale applications.
  • Java SE platform consists of a virtual machine, development tools, deployment technologies and other libraries commonly used in Java. Java EE consists of Enterprise JavaBeans, Java Server Pages, Servlets.
  • SE has no separation of code into different layers, while EE is a multi-tier application, this helps in application more robust, and more secure. Typical Java EE application has following layers:
  • The Client Tier

Client tier is where user interaction happens. Applications in this tier access Java Server, which is usually located on a different machine. A client sends a request, the server processes this request and sends a response back to the client.

  • The Web Tier

This layer handles the interaction between the client and the business tier.


  • The Business Tier

This tier consists of business logic and all core functionalities.

Java vs Java EE Comparison Table

Following is the Comparison Table Between Java vs Java EE

JAVA JAVA EE
Java or Java SE provides basic functionality like defining basic types and objects. Java EE provides APIs for running large-scale applications.
SE is a normal Java Specification. EE is built upon JAVA SE. Provides functionalities like web applications, servlets etc
It consists of class libraries, virtual machines, deployment environment programming. Java EE is a structured application with separate Client, Business, Enterprise layers.
Mostly used to develop APIs for Desktop Applications like antivirus software, game etc Mainly used for web applications
Suitable for beginning Java developers Suitable for experienced Java developers who build enterprise-wide applications.
User authentication functionality is not provided with Java SE Java EE comes within built User authentication

Conclusion Java vs Java EE

Both Java SE vs Java EE has its own benefits. Hence, before starting with application development one should consider the following points

  • Desktop or Web Application

Java SE is primarily used for desktop applications and EE for web applications.

Java EE has many enterprise-wide features like Servlets, EJB etc. Using these will definitely make application development easy and enhance an application. Also, EE will have all the core features of SE as it is built on top of SE. On the other hand, if an application is a simple application with basic functionalities developer can opt for Java SE.

As Java EE applications can be multi-tiered, they provide a layer of security and reusability.

Recommended Article

This has been a useful guide to Difference between Java and Java EE here we have discussed their Meaning, Head to Head comparison, Key difference, and Conclusion. You may also look at the following article to learn more –

Введение в Java EE

Что такое Java EE

Java EE или Java Enterprise Edition представляет платформу для создания корпоративных приложений на языке Java. Прежде всего это сфера веб-приложений и веб-сервисов.

Java EE состоит из набора API и среды выполнения. Некоторые из API:

Java Servlets . Сервлеты представляют специальные модули, которые обрабатывают запросы от пользователей и отправляют результат обработки.

JavaServer Pages (JSP) . Также модули на стороне сервера, которые обрабатывают запросы. Удобны для генерации большого контента HTML. По сути предствляют собой страницы с кодом HTML/JavaScript/CSS с вкраплениями кода на Java

Enterprise JavaBeans (EJB) представляют классы, которые хранят бизнес-логику.

Contexts and Dependency Injection (CDI) предоставляет механизм для внедрения и управления зависимостями в другие объекты.

JSON Processing (JSON-P) позволяет работать со строками JSON в Java

JSON Binding (JSON-B) предоставляет функционал для сериализации и десериализации JSON в объекты Java.

WebSocket позволяет интегрировать WebSocket в приложения на Java.

Java Message Service (JMS) — API для пересылки сообщений между двумя и более клиентами.

Security API — API для стандартизации и упрощения задач обеспечения безопасности в приложениях на Java.

Java API for RESTful Web Services (JAX-RS) — API для применения архитектуры REST в приложениях.

JavaServer Faces (JSF) предоставляет возможности для создания пользовательского интерфейса на стороне сервера.

Эти и ряд других API сообственно и образуют то, что называется Java EE. Стоит отметить, что также в среде веб-разработки на Java популярна еще одна технология Spring. Фреймворк Spring не является частью Java EE и может использоваться как альтернативный подход к созданию веб-приложений на языке Java.

История развития

Предтечей Java EE был проект JPE Project, который стартовал в мае 1998 года. А в декабре 1999 года вышел релиз платформы Enterprise Java Platform (J2EE 1.2), которая объединяла такие компоненты как сервлеты, JSP, EJB, JMS. В 2006 году с выходом 5-й версии она была переименована в Java Enterprise Edition (JEE). С тех пор периодически выходят новые версии платформы. Последняя текущая версия — Java EE 8 вышла в сентябре 2020 года.

В 2020 году произошла новая веха в развитии платформы: Oracle передал контроль над развитием Java EE организации Eclipse Foundation. А в апреле 2020 года Java EE была переименована в Jakarta EE .

В начале 2020 года ожидается выход новой версии Jakarta/Java EE.

Официальный сайт платформы https://jakarta.ee/.

Установка IDE

Для работы с Java EE нам потребуется среда разработки или IDE. Есть различные среды разработки, которые ориентированы на корпоративную разрабоку под Java. Это IntelliJ IDEA, NetBeans и Eclipse. В данном случае на протяжении всего руководства мы преимущественно будем использовать Eclipse, потому что она является бесплатной и довольно широко распространена.

Для начала установим последнюю версию Eclipse, которую можно найти по адресу https://www.eclipse.org/downloads/. На странице загрузок выберем найдем рядом с названием текущей версии Eclipse кнопку «Download» и нажмем на нее.

После нажатия на кнопку нас перенаправит собственно на страницу загрузки, где необходимо будет нажать на кнопку «Download» для загрзуки установочного пакета:


После ее загрузки программы установки запустим ее и в отобразившемся списке опций выберем Eclipse IDE for Java EE Developers :

Далее надо будет указать папку для установки (или оставить выбранную папку по умолчанию) и принять пару лицензионных соглашений, и среда будет установлена.

UA Blog

Blog on instersting topics

Kotlin vs Java : на чем писать под Android

Если ты разработчик приложений на Android, то наверняка как основной язык программирования ты используешь Java. Но известно ли тебе что появились новые языки программирования, которые могут посоревноваться с Java за лидерством в данном сегменте.
Одним из таких языков является Kotlin, относительно молодой язык и по мнению некоторых экспертов он станет заменой Java в мобильной разработке.
В этой статье содержится детальный анализ и сравнения Java и Kotlin, который поможет вам решить на каком языке программирования написать ваш следующий проект.

Большинство разработчиков предпочитают Java при написании Android приложении, в основном и-за того что много лет Java был рекомендуемым Google языком а также тем что сам Android был написан на Java. Для тех кто не знаком с Java напомним что это строго типизированный объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems. Он является вторым по популярности языком программирования на GitHub.

Преимущества Java

  • прост в изучении и понимании
  • кроссплатформенность
  • Android базируется на Java — Android SDK содержит много стандартных Java библиотек
  • Java имеет огромную open-source екосистему
  • Ускоренная сборка с помощью Gradle
  • Java приложения несколько компактнее в сравнении с написанными на Kotlin

Недостатки Java

  • ограничения Java создают проблемы с архитектурой Android API
  • являясь очень подробным языком (verbose language), Java требует написания большого количества кода, что делает появление багов более вероятным
  • Java медленне в сравнение с компилируемими языками, а также использует много памяти

Kotlin

Kotlin — статически типизированный язык программирования, работающий поверх JVM и разрабатываемый компанией JetBrains. Основная цель разрабоки — добавить современных функции и фич в Java. Также Kotlin можно компилировать в JavaScript или в Native для запуска на iOS платформе. Все, что требуется, — это установить плагин Kotlin и позволить ему настроить ваш проект.

Преймущества Kotlin

  • бурно развивается как язык под Android разработку, кроме того используется на бэкенде, например в Spring 5
  • легкий переход с Java на Kotlin — просто установите плагин Kotlin, добавьте его в Gradle билд файлы и нажмите кнопку ‘Convert’
  • наличие extension functions которые помогают разрабатывать чистые API
  • наличие null в системе типов, проблема с null значениями очень распространена в Java
  • Kotlin лаконичный язык, что уменьшает количество потенциальных ошибок
  • совместимый с Java — можно разрабатывать модули на Kotlin и быть уверенным что они будут работать вместе с существующим Java кодом, также Kotlin совместим со всеми Java библиотеками и фреймворками

Недостатки Kotlin

  • Довольно крутая кривая обучения при переключении целых команд на Kotlin из-за лаконичного синтаксиса языка
  • меньшая скорость компиляции в сравнении с Java
  • значительно меньшее комьюнити разработчиков, по этому может быть сложно быстро получить ответ на вопрос на Stackoverflow
  • автокомплит Android Studio и компиляция проекта работает несколько медленнее в сравнении с чисто Java проектами


Заключение

Хотя Kotlin предлагает много преимуществ, которые Java не может, все равно существуют некоторые недостатки. Но Kotlin имеет огромный потенциал как средство разработки под Android, так на конференции Google I/O 2020 команда Android объявила об официальной поддержке языка Kotlin для разработки Android-приложений.

Особенности Java с точки зрения Andro > 1 ноября 2014 г. Александр Зозуля

Что же такое Java и откуда она к нам пришла? А пришла она к нам с далёкого 1995. Поначалу язык назывался Oak («дуб»), разрабатывал его бородатый Джеймсон Гослинг для программирования бытовых электронных устройств. В дальнейшем получил язык название Java, которое, по одной из версий, происходит от марки элитного кофе. Помните логотип?

Приложения Java обычно транслируются в специальный байт-код, поэтому они могут работать на любой виртуальной Java-машине вне зависимости от компьютерной архитектуры.

Моё изучение Java началось с разработки приложения под Android. Разработчиков, которые специализировались в этой сфере, поблизости не было, потому многое оставалось без внимания просто по причине незнания о существовании тех или иных вещей.

Думаю, каждый оказывался в ситуации, когда ты понимаешь, что что-то в твоем коде не так. Имея огромное желание это исправить, ты начинаешь искать ответ на вопрос, который не можешь сформулировать, да еще и подсказать некому.

В этой статье я попробую собрать все особенности программирования на Java для Android, которые в свое время мне пришлось выискивать в безграничной сети. Возможно, кому-то они покажутся очевидными, но мне в свое время такая подборка фишек Java очень бы помогла. Надеюсь, все же найдутся те, кому это пригодится :).

Immutable class и разница между String, StringBuffer/StringBuilder

Класс String

Класс String является immutable — вы не можете модифицировать объект String, но можете заменить его созданием нового экземпляра. Создание нового экземпляра обходится дороговато:

Кусок кода в примере выше создаст 99 новых объектов String, 98 из которых будут тут же откинуты. Создание новых объектов неэффективно.

StringBuffer/StringBuilder

Класс StringBuffer является mutable — использовать StringBuffer или StringBuilder следует тогда, когда вы хотите модифицировать содержимое. StringBuilder был добавлен в пятой джаве, и он во всем идентичен классу StringBuffer, за исключением того, что он не синхронизирован, что делает его значительно шустрее. Но цена скорости — небезопасное поведение в мультипоточной среде.

Вышеуказанный код создает только два новых объекта, StringBuffer и строковую константу, которая возвращается. StringBuffer расширяется по мере надобности, что, в свою очередь, дороговато, так что лучше инициализировать StringBuffer корректным значением размера.

Другой важный момент заключается в том, что создание дополнительных строк не ограничено математическим оператором «+», но существует некоторое количество методов, таких как concat(), trim(), substring(), replace() в классах String, которые генерируют новые объекты.

Почему не стоит использовать AsyncTask при работе с сетью

Вот типичный пример кода, который обычно пишут начинающие разработчики для реализации каких либо действий в сети. В данном примере это загрузка файлов с определенного списка адресов:

После создания выполнить задачу очень просто:

Ну, правда ведь, как и пишет документация, класс AsyncTask используется для реализации параллельных задач, создавая дочерний поток в главном потоке, и имеет возможность обновлять UI по завершению работы. С этим не поспоришь. Есть, конечно, нюанс с реализацией большого количества параллельных задач, но если читать внимательно документацию, становится понятно — чтобы эти задачи не попадали в очередь, а выполнялись параллельно, нужно выполнять их в специальном ThreadPoolExecutor.

А вот чего не пишет документация, так это о толерантности работы с данными — если это можно так назвать. Представьте себе ситуацию, у пользователя медленное соединение, в таких условиях даже самый минимальный запрос может осуществляться 3-5 секунд, не говоря уже о загрузке каких либо файлов. Естественно, в этот момент пользователю может наскучить смотреть на ваш прелоадер, и он уйдёт на другой экран в поисках развлечения, а активность, которая породила AsyncTask, прощается с жизненным циклом под катком Garbage collector-a. Дочерние потоки прекращают существовать, и все труды превращаются в пару красных строчек в логе. Ни данных, ни результата. Пользователь возвращается в активность с надеждой увидеть уже подгруженные обновления, и все начинается заново.

Как этого избежать? Использовать для таких кейсов IntentService, который будет реализовывать всю работу с сетью. По запуску запроса он будет корректно завершен вне зависимости от того, существует активность в данный момент или нет. Данные можно сохранить в кеш и отобразить пользователю при следующем запросе вместе с прелоадером. Таким образом, мы еще и избавимся от скучных экранов загрузки.

Нестатические блоки инициализации

В Java существуют статические блоки инициализации — class initializers, код которых выполняется при первой загрузке класса.

Но существуют также и нестатические блоки инициализации — instance initializers. Они позволяют проводить инициализацию объектов вне зависимости от того, какой конструктор был вызван или, например, вести журналирование:

Такой метод инициализации весьма полезен для анонимных внутренних классов, которые конструкторов иметь не могут. Кроме того, вопреки ограничению синтаксиса Java, используя их, мы можем элегантно инициализировать коллекцию:

Вложенные в интерфейсы классы

Вложенный (nested) в интерфейс класс является открытым (public) и статическим (static) даже без явного указания этих модификаторов. Помещая класс внутрь интерфейса, мы показываем, что он является неотъемлемой частью API этого интерфейса и более нигде не используется.

Поскольку такой класс является статическим, мы можем создать его экземпляр, не ссылаясь на объект объемлющего класса, а лишь указывая тип внешнего интерфейса или реализующего его класса.

Самым, наверное, известным примером этой идиомы является класс Map.Entry , содержащий пары ключ-значение ассоциативного словаря.

Модификация данных из внутренних классов

Хотя в Java и предусмотрено ключевое слово final, однако на деле отсутствует возможность задать неизменяемость самого объекта, а не указывающей на него ссылки (не относится к примитивам). Ну, в принципе, можно спроектировать неизменяемый (immutable) класс, предоставив только геттеры и чистые функции, но нельзя, к примеру, создать неизменяемый массив. Это, как мне кажется, существенное упущение в дизайне языка. Тут бы пригодилось зарезервированное, но запрещённое ключевое слово const. Ждём в следующих версиях?

Таким образом, мы можем модифицировать хоть и финализированные, но фактически изменяемые данные, будь то массивы либо другие объекты, даже из контекста внутренних (inner) классов. Со строками и оболочками примитивных типов, к сожалению, такой фокус не пройдёт. Пусть вас ключевое слово final не вводит в заблуждение.

Конфликт имён

Если импортированы несколько классов с одним и тем же именем из разных пакетов, возникает конфликт имён. В таком случае при обращении к классу следует указывать его полное имя, включая и имя пакета, например, java.lang.String.

Неужели ничего нельзя с этим поделать? Оказывается, можно. Следующий код скомпилируется без проблем, несмотря на то, что класс List присутствует и в пакете java.awt, и в пакете java.util:

Достаточно дополнительно импортировать необходимый в данном примере класс java.util.List.

Тут, как вы заметили, используются кириллические идентификаторы. Да! Для кого-то это станет откровением, но Java такая Java. Идентификатор может состоять из совершенно любых букв, помимо цифр, знаков подчёркивания и валюты США (однако последний знак ($) использовать не рекомендуется, он предназначен для системных нужд). Но оно нам надо? Только представьте себе, сколько разных идентификаторов можно сгенерировать всего-то из символов «А» английского, русского и греческого алфавитов…

Инициализация коллекций

К каким только хитростям не приходится прибегать, чтобы упростить инициализацию коллекций и облегчить восприятие кода. Благодаря переменному числу аргументов в методе, которое появилось в пятой версии SDK, а также заботливому обновлению разработчиками стандартного API, ситуация стала немного лучше:


Но этот код занимает две строки вместо одной и не кажется логически связанным. Можно использовать сторонние библиотеки, такие как Google Collections, или изобрести свой велосипед, но есть и более опрятный вариант:

А с появлением статического импорта во всё той же версии Java можно укоротить эту конструкцию ещё на одно слово:

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

К сожалению, с картами так не получится.

Выход из любого блока операторов

Хотя goto и является зарезервированным ключевым словом Java, использовать его в своих программах нельзя. Временно? На смену ему пришли операторы break и continue, позволяющие прерывать и продолжать не только текущий цикл, но также и любой обрамляющий цикл, обозначенный меткой:

Но многие даже не догадываются, что в Java мы всё же можем при помощи оператора break не только прервать цикл, но и покинуть совершенно любой блок операторов. Чем не оператор goto, правда, односторонний? Как говорится, вперёд и ни шагу назад.

Практическая ценность от таких прыжков весьма сомнительна и нарушает принципы структурного программирования, но знать о такой возможности, я думаю, стоит.

Подсписки

Интерфейс java.util.List, от которого наследуются в частности ArrayList и LinkedList, обладает замечательным методом List.subList(). Он возвращает не новый список, как может показаться, а вид (view) списка, для которого этот метод был вызван, да таким образом, что оба списка станут разделять хранимые элементы. Из этого вытекают прекрасные свойства:

В данном примере из списка someList будут удалены четыре элемента, с третьего по седьмой (не включительно).

Подсписки можно использовать в качестве диапазонов (ranges). Как часто вам требовалось обойти коллекцию, исключая первый или последний элемент, например? Теперь foreach становится ещё мощнее:

Подсписки следует использовать с осторожностью из-за особенностей, вытекающих из их сути (для подробностей смотрите документацию).

Cafe babe

Все скомпилированные классы и интерфейсы хранятся в специальных файлах с расширением .class. В них содержится байт-код, интерпретируемый виртуальной машиной Java. Чтобы быстро распознавать эти файлы, в них, в первых четырёх байтах, содержится метка, которая в шестнадцатеричном виде выглядит так: 0xCAFEBABE.

Ну, с первым словом всё ясно — Java, как уже напоминалось, названа была не в честь тропического острова, а одноимённого сорта кофе, и среди знаков, используемых в шестнадцатеричной системе счисления, литер «J» и «V» не нашлось. А вот чем руководствовались разработчики, выдумывая второе слово, остаётся только догадываться.

Изучаем Java для разработки для Android: введение в Java

В этой серии туториалов вы познакомитесь с Java, языком программирования, используемым для разработки приложений для Android. Наша цель — подготовить тех, кто уже знаком с одним языком программирования, таким как PHP или Objective-C, которые помогут в работе с Java и окунут вас в разработку приложений для Android. В этом уроке вы получите краткое введение в основы Java, включая объектно-ориентированное программирование, наследование и многое другое. Если вы новичок в Java или просто хотите разобраться в деталях, то этот курс для вас!

Давайте начнем

Что касается предпосылок, мы предположим, что вы понимаете, как программировать (возможно, на PHP, или Visual Basic или C ++), но вы не знакомы со спецификой программирования на языке Java. Мы не собираемся учить вас программировать; мы собираемся предоставить вам четкие примеры обычно используемых конструкций и принципов языка Java, указав на некоторые советы и трюки касательно Android.

Что вам понадобится

Технически вам не нужны какие-либо инструменты для завершения этого урока, но вам наверняка понадобится для разработки приложение на Android.

Для разработки приложений для Android (или любых приложений Java, если на то пошло) вам нужна среда разработки для написания и сборки приложений. Eclipse — очень популярная среда разработки (IDE) для Java и предпочтительная среда разработки для Android. Она доступна для операционных систем Windows, Mac и Linux.

Полные инструкции по установке Eclipse (включая поддерживаемые версии) и Android SDK см. На веб-сайте разработчика Android.

Что такое Java?

Приложения для Android разрабатываются с использованием языка Java. На данный момент это действительно ваш единственный вариант для нативных приложений. Java — очень популярный язык программирования, разработанный Sun Microsystems (теперь принадлежащий Oracle). Разработанные намного позже после C и C ++, Java включает в себя многие из мощных функций этих мощных языков программирования и устраняет некоторые из их недостатков. Тем не менее, языки программирования настолько же сильны, как и их библиотеки. Эти библиотеки существуют, чтобы помочь разработчикам создавать приложения.

Некоторые из основных основных функций Java:

  • Его легко изучить и понять
  • Он разработан, чтобы быть независимым от платформы и безопасным, так как использует
    виртуальные машины.
  • Он является объектно-ориентированным

Android сильно зависит от этих основополагающих принципов Java. Android SDK включает в себя множество стандартных Java-библиотек (библиотеки структуры данных, математические библиотеки, графические библиотеки, сетевые библиотеки и все остальное, что вам может понадобиться), а также специальные библиотеки Android, которые помогут вам разработать потрясающие приложения для Android.

Почему Java легко изучить?

Java легко изучить по целому ряду причин. Конечно, нет недостатка в ресурсах Java, которые помогут вам изучить язык, включая веб-сайты, учебные пособия, книги и классы. Java является одним из наиболее широко обсуждаемых, преподаваемых и используемых языков программирования на планете. Он используется для различных проектов программирования, независимо от их масштаба, от веб-приложений и настольных приложений до мобильных приложений.

Если вы исходите из традиционного программирования, такого как C или C ++, вы найдете синтаксис Java очень похожим. Если вы этого не сделаете, то успокойтесь, зная, что вы выбрали один из самых простых языков для изучения. Вы скоро начнете работать.

Наконец, Java является одним из самых читаемых человеком языков, под которым мы подразумеваем, что человек, который ничего не знает о программировании, может часто смотреть на некоторый Java-код и по крайней мере подозревать, что он делает. Рассмотрим следующий пример:

Если вы просто прочитаете код вслух, вы можете в значительной степени сказать, что этот фрагмент кода работает. Существует одна переменная, называемая символом. Если переменная символа равна букве a, мы сделаем что-то (вызовем метод doSomething (), или в другом случае (вызывая метод doSomethingElse ().

Почему важна независимость платформы?

Со многими языками программирования вам нужно использовать компилятор, чтобы уменьшить код на машинный язык, который может понять устройство. Хотя это хорошо, разные устройства используют разные машинные языки. Это означает, что вам нужно скомпилировать ваши приложения для каждого другого устройства или машинного языка, другими словами, ваш код не очень портативен. Это не относится к Java. Компиляторы Java преобразуют ваш код из человеческих читаемых исходных файлов Java в так называемый «байт-код» в мире Java. Они интерпретируются виртуальной машиной Java, которая работает так же, как физический процессор взаимодействует с машинным кодом, чтобы выполнить скомпилированный код. Хотя может показаться, что это неэффективно, было сделано много усилий, чтобы этот процесс был очень быстрым и эффективный. Эти усилия окупились в том, что производительность Java, как правило, уступает только C/C++ в общих сравнениях производительности языка.

Приложения Android запускаются на специальной виртуальной машине под названием Dalvik VM. Хотя сведения об этой виртуальной машине не важны для среднего разработчика, может быть полезно подумать о VM Dalvik как о пузыре, в котором работает ваше приложение для Android, позволяя вам не беспокоиться о том, является ли устройство Motorola Droid, HTC Evo, или новейший тостер под управлением Android. Вам все равно, пока устройство Dalvik VM дружелюбное, и это задача производителя устройства, а не ваша.

Почему Java безопасен?

Давайте рассмотрим эту мысль немного глубже. Поскольку приложения Java работают в оболочке, которая является виртуальной машиной, они изолированы от базового устройства. Таким образом, виртуальная машина может инкапсулировать, содержать и управлять выполнением кода безопасным образом по сравнению с языками, которые работают непосредственно с машинным кодом. Платформа Android делает шаг вперед. Каждое приложение для Android работает в операционной системе (на базе Linux), используя другую учетную запись пользователя и в своем собственном экземпляре Dalvik VM. Приложения Android тщательно контролируются операционной системой и закрываются, если они не работают правильно (например, используют слишком большую вычислительную мощность, становятся невосприимчивыми, ресурсы отходов и т. д.). Поэтому важно разрабатывать приложения, которые являются стабильными и отзывчивыми. Приложения могут общаться друг с другом с использованием четко определенных протоколов.

Компиляция кода

Как и многие языки, Java по-прежнему является скомпилированным языком, хотя он не компилирует весь путь до машинного кода. Это означает, что вы, разработчик, должны скомпилировать ваши проекты Android и упаковать их для развертывания на устройства. Среда разработки Eclipse (используемая с плагином для разработки Android) делает это довольно безболезненным процессом. В Eclipse автоматическая компиляция часто включается по умолчанию. Это означает, что каждый раз, когда вы сохраняете файл проекта, Eclipse перекомпилирует изменения для вашего пакета приложений. Вы сразу видите ошибки компиляции. Eclipse также интерпретирует Java по мере ввода, обеспечивая удобную окраску и форматирование кода, а также показывающие многие типы ошибок, когда вы идете. Часто вы можете щелкнуть по ошибке, и Eclipse автоматически исправит опечатку или добавит оператор импорта или предоставит вам заглушку для метода, сохраняя множество ввода.

Вы можете вручную скомпилировать свой код, если хотите. В Eclipse вы найдете настройки сборки в меню проекта. Если вы включили «Build Automatically», вы все равно можете выбрать опцию «Clean . », которая позволит вам полностью перестроить все файлы. Если «Build Automatically» отключено, включены опции «Build All» и «Build Project». «Build All» означает создание всех проектов в рабочей области. У вас может быть много проектов в рабочем пространстве Eclipse.

Процесс сборки для обычных проектов Java приводит к созданию файла с расширением JAR — Java ARchive. Приложения Android берут файлы JAR и упаковывают их для развертывания на устройствах как файлы Android PacKage с расширением .apk. Эти форматы включают не только ваш скомпилированный Java-код, но и любые другие ресурсы, такие как строки, изображения или звуковые файлы, которые требуется выполнить вашему приложению, а также файл манифеста приложения, AndroidManifest.xml. Файл манифеста Android является файлом, требуемым всеми приложениями Android, которые вы используете для определения сведений о конфигурации вашего приложения.

Что такое объектно-ориентированный язык программирования?

Отлично. Время для очень короткого и 20 000-футового просмотра объектно-ориентированного программирования (ООП). ООП — это стиль или техника программирования, которые основаны на определении структур данных, называемых объектами. Для тех, кто новичок в ООП, объект можно воспринимать так же, как пользовательский тип данных. Например, у вас может быть объект Dog, который представляет собой чертёж общей собаки, с именем, породой и полом. Затем вы можете создавать разные экземпляры объекта Dog для представления конкретных собак. Каждый объект Dog должен быть создан путем вызова его конструктора (метода, который имеет то же имя, что и сам объект, и может иметь или не иметь параметров для установки начальных значений). Например, следующие объекты Dog используют конструктор с тремя параметрами (имя, порода, пол):

Итак, где этот объект Dog определен? Ну, здесь нам нужно начать определение некоторых фундаментальных строительных блоков языка программирования Java. Класс предоставляет определение для объекта. Таким образом, есть класс Dog где-нибудь, определенный вами или в какой-то библиотеке где-нибудь. Вообще говоря, класс будет определен в собственном файле с именем файла, соответствующим имени класса (например, Dog.java). Существуют исключения из этого правила, такие как классы, определенные в других классах (когда класс объявляется внутри класса, он обычно определяется для использования в родительском классе только как вспомогательный класс и называется внутренним классом).

Если вы хотите ссылаться на объект из другого класса, вам нужно включить оператор импорта в начало вашего файла класса, так же, как вы бы использовали оператор #include на компилированном языке, таком как C.

Класс обычно описывает данные и поведение объекта. Поведение определяется с помощью методов класса. Метод является общим термином для подпрограммы на языке ООП. Многие общие классы объектов определены в библиотеках общих классов, таких как комплекты разработки программного обеспечения (SDK), тогда как другие определяются вами, разработчиком, в ваших собственных целях. Затем программное обеспечение создается с использованием и манипулированием экземплярами объектов по-разному.

Пожалуйста, поймите, что это очень обобщенное определение ООП. На эту тему написаны целые книги. На эту тему написаны целые книги. Википедия имеет хороший обзор ООП

Примечание. В этом уроке мы используем много разных терминов. Существует несколько способов ссылаться на данную концепцию (например, суперкласс по сравнению с родительским классом), что сбивает с толку тех, кто новичок в объектно-ориентированном программировании. Различные разработчики используют разные термины, и поэтому мы старались упоминать синонимы там, где это необходимо. Решение о том, какие условия вы будете использовать, является личным выбором.

Понимание наследования

Вот еще одна важная концепция Java, с которой вы столкнетесь: наследование. Проще говоря, наследование означает, что классы Java (и, следовательно, объекты) могут быть организованы в иерархии с более низкими, более конкретными классами в иерархии, наследующие поведение и черты из более высоких, более общих классов.

Эта концепция лучше всего иллюстрируется примером. Давайте притворимся, что мы разрабатываем Java-приложение для имитации аквариума. В этом аквариуме есть рыба. Поэтому мы могли бы определить класс для представления рыбы. Этот класс, называемый Fish, может включать в себя некоторые поля данных (также называемые атрибутами или переменными-членами класса) для описания объекта рыбы: вида, цвета и размера; а также некоторые его поведение в виде методов (также называемых подпрограммами или функциями в процедурных языках), таких как eat (), sleep () и makeBabyFish ().

Для создания и инициализации объекта используется специальный тип метода, называемый конструктором; конструкторы называются такими же, как и их класс, имогут включать в себя параметры. Следующий класс Fish имеет два конструктора: один для создания общего объекта Fish, а другой для конструирования определенного объекта Fish с некоторыми исходными данными. Вы также увидите, что у класса Fish есть два метода eat (): один для приема чего-то случайного, а другой — для еды другой рыбы, который будет представлен другим экземпляром класса Fish:

Классы могут быть организованы в иерархии, где производный класс (или подкласс) включает все функции его родительского класса (orsuperclass), но уточняет и добавляет к ним, чтобы определить более конкретный объект, используя ключевое слово extends. Это называется наследованием.

Например, класс Fish может иметь два подкласса: FreshwaterFish и SaltwaterFish. Эти подклассы будут иметь все функции класса Fish, но могут дополнительно настроить объекты с помощью новых атрибутов и поведения или модифицированного поведения из родительского класса Fish. Например, класс FreshwaterFish может включать информацию о типе пресноводной среды, в которой они жили (например, река, озеро, пруд или лужа). Аналогично, класс SaltwaterFish может настроить метод makeBabyFish() таким образом, чтобы рыба ест своего партнера после размножения (как определено в суперклассе), используя механизм переопределения, например:

Организация поведения объекта с интерфейсами

В Java вы можете организовать поведение объектов в так называемых интерфейсах. Хотя класс определяет объект, интерфейс определяет некоторое поведение, которое может быть применено к объекту. Например, мы можем определить интерфейс Swimmer, который предоставляет набор методов, которые являются общими для всех объектов, которые могут плавать, будь то рыба, выдры или погружные андроиды. Интерфейс Swimmer может указывать четыре метода: startSwimming(), stopSwimming(), dive() и surface().

Затем класс, подобный Fish, может реализовать интерфейс Swimmer (с использованием ключевого слова реализует) и обеспечить реализацию поведения плавания:

Организация классов и интерфейсов с пакетами

Затем иерархии классов, такие как наши классы рыбы, могут быть организованы в пакеты. Пакет — это просто набор классов и интерфейсов, объединенных вместе. Разработчики используют пространства имен для уникального имени пакетов. Например, мы могли бы использовать com.mamlambo.aquarium или om.ourclient.project.subproject в качестве нашего имени пакета, чтобы отслеживать наши классы, связанные с рыбой.

Заключение

Вау! Вы только что начали курс по сбору данных в Java для разработки Android. Мы рассмотрели здесь довольно много материала, поэтому давайте немного поразмыслим, прежде чем переходить к следующему уроку этой серии уроков. В уроке 2 мы переключим внимание на подробные детали синтаксиса Java.

Вы только поцарапали поверхность Java-разработки для разработки Android. Ознакомьтесь со всеми другими замечательными учебниками на Mobiletuts +, чтобы погрузиться глубже в разработку Java и Android. Удачи!

Цукерберг рекомендует:  Хостинг - Порекомендуйте бесплатный хостинг
Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих