Джава-1

Привет. Ну чтож джава, так джава. (для хейтеров тег изучениеджава)

Данная статья будет нудной и скучной, но в конце будет пряник.

Java был создан компанией Sun Microsystems в 1995 и развивался до 2008. В 2009 для компании чуть не наступил п****ц и её поглотила Oracle, в которой на Java было положено вплоть до 2011. На данный момент джава (по некоторым данным) занимает первое место в рейтинге языков.

Говорить что Java - язык программирования не совсем верно. Скорее Java - система, включающая бла, бла, бла. Так говорят в целом несколько источников.

Что же такое Java простым языком? Будем считать Java рукой. Взгляните на руку, которая у вас на мышке (тачпаде, экране, ..). Разделим её <s>бензопилой</s> мысленно на плечо, предплечье, ладонь и пальцы. Как и части в руке, так и части (компоненты) в Java взаимодействуют между собой. Наверно единственное отличие в том, что Java может обходиться без пары-тройки частей, а поковырять в носу без пальцев будет трудновато.

Вам наверно хочется спросить: "Что же это за компоненты и как они взаимодействуют?".

Джава-1 Изучениеджава, Длиннопост, Программирование, Java

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

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

Теперь у нас есть код скомпилированный по правилам библиотеки. И вот тут появляется основное отличие от многих из других языков. Многие языки при компиляции создают программу, заточенную под конкретную операционную систему и/или разрядность. То есть программа, написанная в MacOS не будет работать в Windows, или программа, написанная на старой Windows XP возможно не будет работать в семёрке, и наоборот. Представьте, что вы умеете играть на гитаре, но вдруг вам в первый раз дают в руки фортепьяно. Что-нибудь лёгкое (в траве сидел кузнечик) вы конечно сыграете, не сомневайтесь. Более сложная композиция, увы, вряд ли у вас получится. То же самое происходит и при попытке запустить программу, созданную в другой операционной системе (в дальнейшем ОС).

Java обходит эту проблему следующим образом. Формат и содержание скомпилированного в файл кода не зависят от ОС. Более того этот самый код вообще не понятен никакой из ОС. А понятен он только для специальной программы - Java Virtual Machine (JVM - виртуальная машина Java), которая написана на конкретные ОС (). Именно JVM преобразует скомпилированный код в понятный для конкретной ОС: JVM читает из файла с кодом определённую часть, обращается к библиотеке чтобы узнать что должна делать эта часть и переводит эту часть в язык понятный конкретной ОС. Скомпилированный в данном и подобных случаях код называется байт-кодом.

Скорее всего на вашем компьютере установлена JVM, с помощью которой работают несколько приложений. Помните я говорил, что Java может работать без некоторых частей? Так вот этими частями являются средства для разработки программ. Сейчас мы с вами их установим. Для начала нам нужна та часть с помощью, которой мы и будем программировать, возможно она у вас есть. Чтобы проверить это откройте командную строку и наберите: Java -version

Если у есть Java, то будет выдана её версия, у меня, например, стоит 1.8.0.73. Если нет, то идём сюда и качаем JDK SE (средства разработки на Java - стандартная) последней версии.

При установке вам предложат установить в C:\Program Files\Java\jdk(тут версия), Program Files лучше убрать. Установили? прекрасно. Зайдите в папку в которую вы установили Java и посмотрите, что же там есть: в папке jre находится всё необходимое для работы приложений написанных на Java (то есть если мы не хотим программировать на Java остальные папки нам не к чему); папка db служит для развёртывания Apache'евской базы данных (нам до туда как до луны пешком); include (в ней находятся с++ и c скрипты) пока тоже не для нашего внимания; лицензионные соглашения, ридми, приветствие от разработчиков Java; в папке bin находятся компилятор и помощники в разработке на Java.

Чтобы легко работать со средствами из папки bin нужно выполнить следующие шаги:

* откройте меню панель управление, выберите пункт система (система и безопасность\система)

* дополнительные параметры системы (слева), вкладка дополнительно, переменные среды

* в системных переменных найдите Path

* добавьте в начале путь к папке jdk\bin поставив точку с запятой на конце (у меня C:\Java\jdk1.7.0_79\bin;) (если путь содержит пробел его необходимо заключить в кавычки "C:\Program Files\Java\jdk1.7.0_79\bin"; )

* ок, ок, ок, закрыть.

Всё сделали правильно? проверка: Java -version

Папка lib (посмотрите она почти похожа на ту что находится в папке jre, но чуть побольше), логично предположить что это стандартная библиотека для пользователей плюс немного для разработчиков. Так оно и есть это та самая библиотека

Исходный код этой библиотеки находится в src.zip. Рекомендуемая распаковка архива:

* создайте папку src и переместите туда архив.

* запустите командную строку

* выполните команду cd /d путь_до_папки_src (у меня cd /d C:\Java\jdk1.8.0_73\src )

* выполните команду jar xvf src.zip

Если вы следовали инструкции то, скорее всего в командной строке у вас помчится длинный список, а в папке src появятся 6 новых папок. Когда мы поймём язык джава, здесь можно будет посмотреть, как что работает.

Здесь можно посмотреть документацию по Java

Теперь можно писать программки в блокноте, после с помощью командной строки компилировать, а потом и запускать. Если ошибка то всё заново - долго, неудобно.

Гораздо удобнее будет работать в программе, в которой можно и программировать, и сразу посмотреть выполнение программы, и ошибки исправлять быстрее, и скомпилировать программу. Такими программами являются интегрированные среды разработки. Мы будем использовать eclipse, ибо мне это название нравиться больше, чем у остальных.

Качаем Eclipse IDE for Java EE Developers. При запуске у вас спросит папку куда по умолчанию будут сохраняться коды программы. Можете выбрать единожды и поставить галочку чтобы больше не спрашивало.

Всё что нужно мы установили. Теперь можно и попрограммировать. Но это только через понедельник. А пока пирожок как и обещал (исходник отсюда):

* запускаем eclipse

* file -> new -> project

* Java project -> Next

* в Project name - fractal

* use defult jre

Джава-1 Изучениеджава, Длиннопост, Программирование, Java

* finish

* no

* в списке слева щёлкаем правой кнопкой мыши по fractal

* new -> class

* в поле naim вводим fractal

* открываем fractal.java и вводим следующий код

import java.awt.Color;

import java.awt.Graphics;

import javax.swing.JFrame;

import javax.swing.JPanel;


public class fractal {

private static final double SX = 0.005;

private static final double SY = 0.005;

private static final int WIDTH = 640;

private static final int HEIGHT = 480;

private static final double DX = -350;

private static final double DY = -235;

private static final int COUNT_ITER = 100;

private static final int BAIL_OUT = 16; //вот тут можно поиграть

private static final int STEP_X = 10; //и тут

private static final int STEP_Y = 10; //и тут


private static void drawClouds(Graphics g) {

for (int i = 0; i < WIDTH; i += STEP_X) {

for (int j = 0; j < HEIGHT; j += STEP_Y) {

double c = SX * (i + DX);

double d = SY * (j + DY);

double x = c;

double y = d;

double t;

int k = 0;

g.setColor(new Color((float)Math.random(),

(float)Math.random(), (float)Math.random()));

while (x * x + y * y < BAIL_OUT && k < COUNT_ITER) {

t = x * x - y * y + c;

y = 2 * x * y + d;

x = t;

g.drawOval((int) (x / SX - DX), (int) (y / SY - DY), 1, 1);

++k;

}

}

}

}


public static void main(String[] args) {

JFrame frame = new JFrame();

frame.addNotify();

frame.setSize(frame.getInsets().left +

frame.getInsets().right + WIDTH,

frame.getInsets().top +

frame.getInsets().bottom + HEIGHT);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


frame.add(new JPanel() {

@Override public void paintComponent(Graphics g) {

super.paintComponent(g);

drawClouds(g);

}

});

frame.setVisible(true);

}

}

* запускаем

* ???

* profit

если доигрались то windows -> perspective -> open perspective -> debug там будет кнопка stop

Джава-1 Изучениеджава, Длиннопост, Программирование, Java
3
Автор поста оценил этот комментарий

лол, оказывается на пикабу есть юзер @override

3
Автор поста оценил этот комментарий

А ты никак не успокоишься я смотрю?)))

раскрыть ветку
Автор поста оценил этот комментарий

Добрый вечер.

Начал с первого такого поста. И видимо дико туплю, где найти src.zip?

раскрыть ветку
1
Автор поста оценил этот комментарий
наберите: Java -version

Всё маленькой буквы

Ну и исходники лучше картинкой, иначе эту лапшу без форматирования сложно понять.


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


ЗЫ Хейтарам: попробуйте понимать программу, читать ее, как текст. Java/Swing очень выразительны и лаконичны.