Форум Игромании
 
Регистрация
Справка

Программирование Создание, разработка и доработка различных игр и программного обеспечения

Ответ
 
Опции темы
Старый 04.10.2010, 10:21   #1
Dis is one half
 
Аватар для OneHalf
 
Регистрация: 19.10.2007
Адрес: Санкт-Петербург
Сообщений: 1,460
Репутация: 304 [+/-]
Java

Java (должно произносится Джава, но используется и Ява) — объектно-ориентированный язык программирования. Разработан в компании Sun Microsystems в 1995 году (теперь поддерживается компанией Oracle).

Особенностью этого языка программирования является то, что программа компилируется не в коды процессора, а в специальный байт-код, который потом исполняется виртуальной ява-машиной. За счет этого достигается кросплатформенность: программы написанные на Java запускаются и одинаково работают и в Windows и Linux и MacOS и т.д. без изменений исходного кода.
От аналогичного подхода к компилации в .NET отличается тем, что в Java виртуальная машина выполняет инструкции байт-кода, а в .NET программа "докомпилируется" перед запуском.

Платформа Java подразделяется на три типа:
  • Java Micro Edition - версия языка для программирования мобильных устройств. За счет независимости программы от платформы, Java охватила огромную долю мобильников, в результате чего программа написанная на JavaME будет работать одинаково на разных мобильниках.
  • Java Standart Edition - версия для компьютеров.
  • Java Enterprise Edition - версия для приложений масштаба предприятия. Включает в себя работу с базами данных, web сервисами, прочими клиент-серверными примочками и так далее.

К языку прилагается огромное количество библиотек на все случаи жизни: от 2D и 3D графики, до баз данных и криптографии.

Библиотеки Java:
Скрытый текст:
  • Swing - стандартная библиотека визуальных элементов (кнопки, чекбоксы и т.д.)
  • Java2D и Java3D - графические библиотеки. Java2D используется для собдания собственных графических компонентов (особенно если требуется масштабирование, отрисовка текста под наклоном и т.д.) Java3D используется, соответственно при создании трехмерных приложений.
  • JCE, JAAS, JSSE - библиотеки реализации криптографии, аутентификации и авторизации, поддержки протокола SLL соответственно.
  • JDBC - работа с базами данных.
  • JNI - интерфейс взаимодействия с программами, написанными на других языках.
  • RMI, Jini - вызов удаленных методов (т.е. запуск функций на других компьютерах сети)
  • JXTA - создание peer-2-peer приложений
  • И еще туева хуча плюшек для сетевого взаимодействия, сервлетов и прочего. (Список есть тут)

Последний раз редактировалось OneHalf; 16.01.2011 в 03:58.
OneHalf вне форума  
Отправить сообщение для OneHalf с помощью ICQ Отправить сообщение для OneHalf с помощью Skype™ Ответить с цитированием
Старый 06.10.2010, 17:52   #2
Юзер
 
Регистрация: 08.09.2007
Сообщений: 271
Репутация: 61 [+/-]
Код:
public class HelloWorld
{
  public static void main(String[] args)
  {
    HelloWorld hw = new HelloWorld(); 
    hw.showString();
  }
  public void showString()
  {
    System.out.println("Hello, World!");
  }
}
Покажите, пожалуйста, на этом простейшем примере (язык Java), как сделать так, чтобы выводились в результате русские символы. И как вообще сделать так, чтобы потом можно их было спокойно использовать?
__________________
"Надежда умирает последней", - сказала Вера и застрелила Любовь...

Последний раз редактировалось Arantar; 06.10.2010 в 17:58.
Arantar вне форума  
Ответить с цитированием
Старый 06.10.2010, 19:24   #3
Dis is one half
 
Аватар для OneHalf
 
Регистрация: 19.10.2007
Адрес: Санкт-Петербург
Сообщений: 1,460
Репутация: 304 [+/-]
А в чем проблема то? В яве все по умолчанию в utf-8 и проблем быть не должно. И как именно ты хочешь "потом их спокойно использовать"?
OneHalf вне форума  
Отправить сообщение для OneHalf с помощью ICQ Отправить сообщение для OneHalf с помощью Skype™ Ответить с цитированием
Старый 06.10.2010, 21:29   #4
Юзер
 
Регистрация: 08.09.2007
Сообщений: 271
Репутация: 61 [+/-]
OneHalf, у меня вместо русских букв кракозябра в командной строке получается.
__________________
"Надежда умирает последней", - сказала Вера и застрелила Любовь...

Последний раз редактировалось Arantar; 06.10.2010 в 21:32.
Arantar вне форума  
Ответить с цитированием
Старый 06.10.2010, 22:56   #5
Dis is one half
 
Аватар для OneHalf
 
Регистрация: 19.10.2007
Адрес: Санкт-Петербург
Сообщений: 1,460
Репутация: 304 [+/-]
Хе хе, похоже дело в том, что виндовая консоль понимает только кодировку cp866, а ява хочет туда вывести utf.

Можно сделать так:
Код:
package javatest;

import java.io.UnsupportedEncodingException;

public class HelloWorld {

    public static void main(String[] args) {
        HelloWorld hw = new HelloWorld();
        hw.showString();
    }

    public void showString() {
        try {
            System.out.println(new String( "Привет, мир!".getBytes("Cp866"))); // Перекодировка
        }
        catch (UnsupportedEncodingException uee) { // Приходится перехватывать это исключение :(
            System.out.println("Hello, World!");
        }
    }
}
(написано по образу и подобию этой статьи: http://citforum.ru/internet/javascript/java_rbint.shtml)

Никогда не запускал раньше программы из консоли, и все результаты всяческих
System.out.println("бла-бла")
видел только внутри NetBeans, где они отображаются правильно.
OneHalf вне форума  
Отправить сообщение для OneHalf с помощью ICQ Отправить сообщение для OneHalf с помощью Skype™ Ответить с цитированием
Старый 06.10.2010, 23:05   #6
Юзер
 
Регистрация: 08.09.2007
Сообщений: 271
Репутация: 61 [+/-]
Цитата:
Сообщение от OneHalf Посмотреть сообщение
Никогда не запускал раньше программы из консоли
Сам бы рад, но обстоятельства. И с почином, кстате.


Что-то не выходит, выдаёт следующее, будем думать...
Скрытый текст:
__________________
"Надежда умирает последней", - сказала Вера и застрелила Любовь...

Последний раз редактировалось Arantar; 06.10.2010 в 23:18.
Arantar вне форума  
Ответить с цитированием
Старый 07.10.2010, 19:22   #7
Dis is one half
 
Аватар для OneHalf
 
Регистрация: 19.10.2007
Адрес: Санкт-Петербург
Сообщений: 1,460
Репутация: 304 [+/-]
Возможно нужно убрать или переименовать пакет в строке

"package javatest;"

(Это у меня так пакет назывался.)
OneHalf вне форума  
Отправить сообщение для OneHalf с помощью ICQ Отправить сообщение для OneHalf с помощью Skype™ Ответить с цитированием
Старый 13.10.2010, 00:15   #8
Юзер
 
Регистрация: 08.09.2007
Сообщений: 271
Репутация: 61 [+/-]
Посоветуйте хороший учебник по Java, пожалуйста.
__________________
"Надежда умирает последней", - сказала Вера и застрелила Любовь...
Arantar вне форума  
Ответить с цитированием
Старый 13.10.2010, 01:52   #9
Dis is one half
 
Аватар для OneHalf
 
Регистрация: 19.10.2007
Адрес: Санкт-Петербург
Сообщений: 1,460
Репутация: 304 [+/-]
Во всех учебниках одно и тоже пишут. Лично я всегда придерживаюсь такой концепции изучения языков:
1. Накачать кучу учебников
2. Изучить самый тонкий
3. Начать писать какую-нибудь большую программу (когда я изучал Java, я писал прогу по расчету шума от вентиляции (на работе акустикой занимаюсь)). Тут главное масштабность и разнообразие необходимых методов программирования, а не сама программа.
4. Успеть понять, что нифига в языке не понятно.
5. Писать программу как можешь, постоянно заглядывая в самый толстый учебник и гугл
6. Периодически просматривать написанный код и, в случае необходимости, переписывать с учетом приобретенных знаний
7. Можно считать себя знатоком языка, если переписал свою программу почти целиком пару раз :)

Последнее утверждение эмпирическое, но примерно так у меня было со всеми языками:
  • На Бейсике я писал ханойские башни в графике.
  • На Паскале - программу тестирования (даже заработал с ней первое место на конкурсе ДЮЦ'а своего города)
  • На ассемблере я писал вирусы под ДОС. Очень увлекательное, кстати, занятие, кубики рубика нервно курят в сторонке.
    То как я сокращал размер вируса с трех килобайт до 866 байт останется в моей памяти как самое яркое воспоминание о программировании школьных лет. (Еще бы, несколько месяцев на это потратил)
  • На PHP+MySQL+AJAX+HTML+CSS - совсем недавно пытался написать сайт университетской группы с кучей фишек. (Сайт забросил, ибо PHP и Ко выучил, а дальше допиливать свой движок не стал, ибо кому надо, заюзают какую-нибудь CMS, а я больше не учусь)
  • На яве писал прогу по распространению шума по вентиляции
  • На С++ - программу микроконтроллера для диплома (аж для неконтактного взрывателя торпеды)
  • На MatLab программа расчета отраженных электромагнитных сигналов от циллиндрических/эллипсоидальных объектов в морской воде. (Тоже для диплома)

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

Некоторые языки воспринимаются легко и без таких методов. Например, С# создавался почти как клон явы, и отличается совсем чуть-чуть. (Зная только C# или яву, можно легко читать листинги другого языка)

В общем чтобы научиться программировать, надо начать это делать. Учебник по сути не важен, важно чтобы была практика и возможность найти решение возникающих проблем по мере накопления этой практики.
OneHalf вне форума  
Отправить сообщение для OneHalf с помощью ICQ Отправить сообщение для OneHalf с помощью Skype™ Ответить с цитированием
Старый 13.10.2010, 20:05   #10
Зинеб Нора
 
Аватар для lorin


 
Регистрация: 30.06.2003
Адрес: Köln, Germany
Сообщений: 962
Репутация: 420 [+/-]
Естъ небольшая проблемка.
Нужно соединитъ два массива вместе используя System.arraycopy()
т.е. приципить один к концу другого.
На сколько мне известно, изменять размер существующего массива нельзя, т.е. следующий код не пройдет:
Скрытый текст:
Код:
public class Auf54 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] iErsteStappel = {6,7};
		int[] iZweiteStappel = {1,2,3,4,5};
		System.arraycopy(iErsteStappel, 0, iZweiteStappel, iZweiteStappel.length, iErsteStappel.length); 	//funkt nicht wegen den Array-Groessen.
		for (int i=0; i<iZweiteStappel.length; i++ )
		{
			System.out.println(iZweiteStappel[i]);
		}

	}

можно ли как-то обойти это ограничение, кроме как создать третий массив с размерностью равной сумме размерностей первых двух и скопироватъ сначала первый, а затем второй?
т.е. кроме как так:
Скрытый текст:
Код:
public class Auf54 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] iErsteStappel = {6,7};
		int[] iZweiteStappel = {1,2,3,4,5};
		int iALaenge=0;
		iALaenge=iErsteStappel.length+iZweiteStappel.length;
		int[] iZusammen = new int[iALaenge];
		System.arraycopy(iZweiteStappel, 0, iZusammen, 0, iZweiteStappel.length);
		System.arraycopy(iErsteStappel, 0, iZusammen, iZweiteStappel.length, iErsteStappel.length);
		
		
		for (int i=0; i<iZusammen.length; i++ )
		{
			System.out.println(iZusammen[i]);
		}

	}

}
__________________
Жив. Цел. Тигръ Графоман
"Method takes the string and string to split. And split the string at string to split, also add space at the end of the string if string ends with string to split."
Рисуем вместе

Последний раз редактировалось lorin; 13.10.2010 в 20:24.
lorin вне форума  
Отправить сообщение для lorin с помощью ICQ Отправить сообщение для lorin с помощью Skype™ Ответить с цитированием
Старый 13.10.2010, 20:51   #11
Dis is one half
 
Аватар для OneHalf
 
Регистрация: 19.10.2007
Адрес: Санкт-Петербург
Сообщений: 1,460
Репутация: 304 [+/-]
Нельзя. При создании массива под него выделяется память, размер которой изменить нельзя. Так что если нужны именно массивы, то нужно создавать новый с нужным размером.

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

for(Integet n : Коллекция<с типом Integer>) {
...
}
OneHalf вне форума  
Отправить сообщение для OneHalf с помощью ICQ Отправить сообщение для OneHalf с помощью Skype™ Ответить с цитированием
Старый 13.10.2010, 23:17   #12
Зинеб Нора
 
Аватар для lorin


 
Регистрация: 30.06.2003
Адрес: Köln, Germany
Сообщений: 962
Репутация: 420 [+/-]
OneHalf, да, я в курсе, потому и удивился заданию. Буквально:
имеется два массива array, нужно к первому прицепить второй, а ко второму первый и все это при помощи метода System.arraycopy()

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

Вобщем я считаю, что задание сформулированно некорректно.
Следующим заданием по скрипту бы было увеличение заданного array of integer на 10 integer элементов при помощи того же метода. И тут мне тоже ничего иного в голову не идет, кроме как повторения предыдущей песни, но с пустым вторым массивом на 10 элементов.

Задания начального уровня, подразумевается, что обучающийся только познакомился с имплементацией массивов и метода System.arraycopy().
__________________
Жив. Цел. Тигръ Графоман
"Method takes the string and string to split. And split the string at string to split, also add space at the end of the string if string ends with string to split."
Рисуем вместе
lorin вне форума  
Отправить сообщение для lorin с помощью ICQ Отправить сообщение для lorin с помощью Skype™ Ответить с цитированием
Старый 20.10.2010, 22:33   #13
Юзер
 
Регистрация: 08.09.2007
Сообщений: 271
Репутация: 61 [+/-]
Не получается создать программку, которая бы при вводе месяца, выводила бы сезон года.
Скрытый текст:
Код:
class VESNA{
public static void main
(String[] args){
String s1;
s1=args[0];
if ((s1=="december")|| (s1=="january")||(s1=="february")) s1="winter";
if ((s1=="march")||(s1=="april")||(s1=="may")) s1="spring";
if ((s1=="june")||(s1=="july")||(s1=="auguest")) s1="summer";
if ((s1=="september")||(s1=="october")||(s1=="november")) s1="autumn";
System.out.println(s1);
}}
__________________
"Надежда умирает последней", - сказала Вера и застрелила Любовь...
Arantar вне форума  
Ответить с цитированием
Старый 21.10.2010, 00:27   #14
Dis is one half
 
Аватар для OneHalf
 
Регистрация: 19.10.2007
Адрес: Санкт-Петербург
Сообщений: 1,460
Репутация: 304 [+/-]
Сравнивать строки надо так:
Код:
if (s1.equals("december")) 
    doSomeThing();
Иначе программа сравнивает адреса строк в памяти, а не их содержимое
OneHalf вне форума  
Отправить сообщение для OneHalf с помощью ICQ Отправить сообщение для OneHalf с помощью Skype™ Ответить с цитированием
Старый 24.10.2010, 15:14   #15
Зинеб Нора
 
Аватар для lorin


 
Регистрация: 30.06.2003
Адрес: Köln, Germany
Сообщений: 962
Репутация: 420 [+/-]
Arantar, плюс, хоть это и очевидно и думаю не имеет отношения к проблеме, нет ввода данных для s1
__________________
Жив. Цел. Тигръ Графоман
"Method takes the string and string to split. And split the string at string to split, also add space at the end of the string if string ends with string to split."
Рисуем вместе
lorin вне форума  
Отправить сообщение для lorin с помощью ICQ Отправить сообщение для lorin с помощью Skype™ Ответить с цитированием
Старый 24.10.2010, 16:09   #16
Новичок
 
Аватар для xine
 
Регистрация: 21.03.2010
Сообщений: 48
Репутация: 26 [+/-]
Цитата:
Сообщение от lorin Посмотреть сообщение
нет ввода данных для s1
Есть:
Цитата:
s1=args[0];
xine вне форума  
Ответить с цитированием
Старый 24.10.2010, 18:02   #17
Зинеб Нора
 
Аватар для lorin


 
Регистрация: 30.06.2003
Адрес: Köln, Germany
Сообщений: 962
Репутация: 420 [+/-]
Цитата:
Сообщение от xine Посмотреть сообщение
Есть:
Да, точно. Пропустил шапку.
__________________
Жив. Цел. Тигръ Графоман
"Method takes the string and string to split. And split the string at string to split, also add space at the end of the string if string ends with string to split."
Рисуем вместе
lorin вне форума  
Отправить сообщение для lorin с помощью ICQ Отправить сообщение для lorin с помощью Skype™ Ответить с цитированием
Старый 13.11.2010, 17:43   #18
Dis is one half
 
Аватар для OneHalf
 
Регистрация: 19.10.2007
Адрес: Санкт-Петербург
Сообщений: 1,460
Репутация: 304 [+/-]
Умеет тут кто-нибудь юзать JasperReports и iReport ? Мне бы какую-нибудь краткую справку почитать, а то никак не могу понять как это должно работать.
OneHalf вне форума  
Отправить сообщение для OneHalf с помощью ICQ Отправить сообщение для OneHalf с помощью Skype™ Ответить с цитированием
Старый 24.11.2010, 18:27   #19
Юзер
 
Регистрация: 08.09.2007
Сообщений: 271
Репутация: 61 [+/-]
Факториал на Java и на VBA как представить?
__________________
"Надежда умирает последней", - сказала Вера и застрелила Любовь...
Arantar вне форума  
Ответить с цитированием
Старый 02.12.2010, 08:51   #20
Dis is one half
 
Аватар для OneHalf
 
Регистрация: 19.10.2007
Адрес: Санкт-Петербург
Сообщений: 1,460
Репутация: 304 [+/-]
Библиотеку JGraphX тоже никто не использовал?
OneHalf вне форума  
Отправить сообщение для OneHalf с помощью ICQ Отправить сообщение для OneHalf с помощью Skype™ Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 17:12.


Powered by vBulletin® Version 3.8.0
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Rambler's Top100 Яндекс цитирования