Перейти до вмісту

Java, всі питання тут


Повідомлень в темі: 53

#1 Перекоти-поле

    Ледар

  • Користувачі
  • PipPip
  • 12 повідомлень

Відправлено 06.07.2006 – 21:00

  • 53
Порадьте, будь ласка, (бажано з приведеним кодом) як зберегти змінну аплету (наприклад об'єкт в якому зберігаються налаштування аплету). Сериалізацію об'єкту я використовувати не хочу - може є якісь кращі варіанти?...
Можливо в аплетах є щось подібне до сесій так як в сервлетах, або можна оголосити змінну з часом існування "до другого пришестя"... Підкажіть. :)

#2 Перекоти-поле

    Ледар

  • Користувачі
  • PipPip
  • 12 повідомлень

Відправлено 02.10.2006 – 10:18

Мій web-додаток складається з сервлета та аплета написаних на Java. Аплет надає можливість користувачу працювати з конкретною таблицею БД (переглядати, редагувати і зберігати її) для чого він використовує сервлет. Тобто, аплет посилає запити сервлету на вибірку даних з таблиці БД чи збереження зроблених користувачем змін в таблиці БД. Для відображення таблиці в аплеті було використано компоненти DataExpress.
Вибірка даних з таблиці БД відбувається у мене так. Аплет посилає сервелту назву БД, назву таблиці БД, URL БД, логін та пароль що вів користувач та назву драйверу підєднання до БД. Сервлет на основі цих даних формує запит до БД на вибірку даних і повертає ці дані назад аплету який їх і відображає. Це в мене вже працює.
Збереження змін зроблених над цією таблицею БД повинно було проходити так. Коли користувач натискає на кнопку Зберегти в аплеті, то аплет посилає сервлету серіалізований об'єкт NewMetaDataDBConnection що містить назву БД, назву таблиці БД, URL БД, логін та пароль що вів користувач, назву драйверу підєднання до БД і самі дані що потрібно зберегти в таблиці БД. Гарантую що об'єкт містить правильні дані. Тоді в сервлеті я пишу наступний код для збереження змін в таблиці БД:
database1.setConnection(new ConnectionDescriptor(NewMetaDataDBConnection.URL, NewMetaDataDBConnection.Login, NewMetaDataDBConnection.Password, false,NewMetaDataDBConnection.Driver));
		database1.setDatabaseName("");

		  NewMetaDataDBConnection.data.loadDataSet(queryDataSet1);
		  DataSetData data = DataSetData.extractDataSet( queryDataSet1 );
		  database1.saveChanges(queryDataSet1);
Проблема полягає в тому, що я не розумію, чому зміни зроблені користувачем в таблиці БД не зберігаються сервлетом. Тобто, чому цей код нічого не зберігає в таблиці БД B) .
Первісні коди додаю.

Прикріплені файли

  • Прикріплений файл  src.zip   9.42К   45 Кількість завантажень:

  • 0

#3 Aleph

    Профі

  • На перевірці
  • PipPipPipPipPipPipPip
  • 396 повідомлень
  • Стать:Чоловік

Відправлено 24.05.2007 – 23:29

Чи може хтось порадити зручне та компактне інтегроване середовище для розробки JAVA програм?
  • 0

#4 Dmitrius

    Частий гість

  • Користувачі
  • PipPipPip
  • 65 повідомлень
  • Стать:Чоловік
  • Місто:Київський Політех (КПІ). А взагалі з Білої Церкви...

Відправлено 09.10.2007 – 20:23

Однозначно Eclipse 3.3 :D
  • 0

#5 .salo

    Постійний житель

  • Користувачі
  • PipPipPipPipPip
  • 158 повідомлень

Відправлено 11.12.2007 – 16:21

Intellij IDEA. Пробував і екліпс, але вони навіть поряд не стоять. правда ідея не надто "компактна", але воно того аврте, я тепер писати в пхп взагалі не можу, не вистачає простих речей (наприклад перейменування методу класу у всіх файлах де він використовується одночасно, і т. д.). Точно шо бери ідею :unsure:

Перегляд дописуKurt (2.10.2006 10:18) писав:

Мій web-додаток складається з сервлета та аплета написаних на Java. Аплет надає можливість користувачу працювати з конкретною таблицею БД (переглядати, редагувати і зберігати її) для чого він використовує сервлет. Тобто, аплет посилає запити сервлету на вибірку даних з таблиці БД чи збереження зроблених користувачем змін в таблиці БД. Для відображення таблиці в аплеті було використано компоненти DataExpress.
Вибірка даних з таблиці БД відбувається у мене так. Аплет посилає сервелту назву БД, назву таблиці БД, URL БД, логін та пароль що вів користувач та назву драйверу підєднання до БД. Сервлет на основі цих даних формує запит до БД на вибірку даних і повертає ці дані назад аплету який їх і відображає. Це в мене вже працює.
Збереження змін зроблених над цією таблицею БД повинно було проходити так. Коли користувач натискає на кнопку Зберегти в аплеті, то аплет посилає сервлету серіалізований об'єкт NewMetaDataDBConnection що містить назву БД, назву таблиці БД, URL БД, логін та пароль що вів користувач, назву драйверу підєднання до БД і самі дані що потрібно зберегти в таблиці БД. Гарантую що об'єкт містить правильні дані. Тоді в сервлеті я пишу наступний код для збереження змін в таблиці БД:
database1.setConnection(new ConnectionDescriptor(NewMetaDataDBConnection.URL, NewMetaDataDBConnection.Login, NewMetaDataDBConnection.Password, false,NewMetaDataDBConnection.Driver));
		database1.setDatabaseName("");

		  NewMetaDataDBConnection.data.loadDataSet(queryDataSet1);
		  DataSetData data = DataSetData.extractDataSet( queryDataSet1 );
		  database1.saveChanges(queryDataSet1);
Проблема полягає в тому, що я не розумію, чому зміни зроблені користувачем в таблиці БД не зберігаються сервлетом. Тобто, чому цей код нічого не зберігає в таблиці БД :angry12: .
Первісні коди додаю.



Зкоду нічого не зрозуміло (приєднаний файл правда не розбирав :prapor3:), але не видно де ти комітиш зміни в базу. Тобто має вкінці дій з базою бути стрічка .comitTransaction
  • 0

#6 andriyukr

    Чайник

  • Користувачі
  • Pip
  • 6 повідомлень
  • Місто:Рим

Відправлено 11.12.2007 – 17:23

Перегляд дописуAleph (25.05.2007 00:29) писав:

Чи може хтось порадити зручне та компактне інтегроване середовище для розробки JAVA програм?

Я користуюсь JCreator'ом.

В мене я одне питання, трохи не серйозне, але ніяк не можу його зрозуміти. Це з тесту в університеті:
int x=k;
int y=k;

Скільки буде ++x+y++ ?

a) 2k+1
b) 2k
c) 2k+1
d) 2k+2

Взагалі то ++х означає х++, одже в теорії ++x+y++ має виходити 2k+2, а на практиці друкує 2k+1.

Чому? :angry12:
  • 0

#7 Сварус

    Старійшина

  • Користувачі
  • PipPipPipPipPipPipPipPipPipPip
  • 3815 повідомлень
  • Стать:Чоловік
  • Місто:Вінниця

Відправлено 11.12.2007 – 19:14

andriyukr, x++ це не одне і те ж що ++x:
"++x" - додає до змінної х одиницю і в цьому ж виразі проводить обрахунки зі зміненим значенням х.
"х++" - додає до змінної одиницю після ";", тобто після закінчення виконання лексеми.

Таким чином лексема
int res = ++x+y++;
розкладається на дві:
int res = (x+1)+y;
y=y+1;

  • 0

#8 kissarat

    Профі

  • Користувачі
  • PipPipPipPipPipPipPip
  • 314 повідомлень
  • Стать:Чоловік
  • Місто:Тернопіль

Відправлено 17.02.2008 – 14:52

може я плуг. але вивчення моэъ джави мысяць тому закычилось на rmi
я скопыював два класи з документацыъ
http://java.sun.com/javase/6/docs/technote...ello-world.html

package unker.learing.rmi;

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface Hello extends Remote {
String sayHello() throws RemoteException;
}


package unker.learing.rmi;

import java.rmi.registry.Registry;
import java.rmi.registry.LocateRegistry;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;

public class Server implements Hello {

public Server() {}

public String sayHello() {
return "Hello, world!";
}

public static void main(String args[]) {

try {
Server obj = new Server();
Hello stub = (Hello) UnicastRemoteObject.exportObject(obj, 0);

// Bind the remote object's stub in the registry
Registry registry = LocateRegistry.getRegistry();
registry.bind("Hello", stub);

System.err.println("Server ready");
} catch (Exception e) {
System.err.println("Server exception: " + e.toString());
e.printStackTrace();
}
}
}


ы воно викинуло мены ран-тайм екзепшн

Server exception: java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is:
java.net.ConnectException: Connection refused
java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is:
java.net.ConnectException: Connection refused
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:601)
at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:198)
at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:184)
at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:322)
at sun.rmi.registry.RegistryImpl_Stub.bind(Unknown Source)
at unker.learing.rmi.Server.main(Server.java:24)
Caused by: java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:519)
at java.net.Socket.connect(Socket.java:469)
at java.net.Socket.<init>(Socket.java:366)
at java.net.Socket.<init>(Socket.java:180)
at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFacto
ry.java:22)
at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFacto
ry.java:128)
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:595)
... 5 more


навыть не знаю шо би то мало бути
  • 0

#9 .salo

    Постійний житель

  • Користувачі
  • PipPipPipPipPip
  • 158 повідомлень

Відправлено 26.02.2008 – 13:11

Перегляд дописуYounker (17.02.2008 14:52) писав:

може я плуг. але вивчення моэъ джави мысяць тому закычилось на rmi
я скопыював два класи з документацыъ
http://java.sun.com/javase/6/docs/technote...ello-world.html

package unker.learing.rmi;

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface Hello extends Remote {
String sayHello() throws RemoteException;
}


package unker.learing.rmi;

import java.rmi.registry.Registry;
import java.rmi.registry.LocateRegistry;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;

public class Server implements Hello {

public Server() {}

public String sayHello() {
return "Hello, world!";
}

public static void main(String args[]) {

try {
Server obj = new Server();
Hello stub = (Hello) UnicastRemoteObject.exportObject(obj, 0);

// Bind the remote object's stub in the registry
Registry registry = LocateRegistry.getRegistry();
registry.bind("Hello", stub);

System.err.println("Server ready");
} catch (Exception e) {
System.err.println("Server exception: " + e.toString());
e.printStackTrace();
}
}
}


ы воно викинуло мены ран-тайм екзепшн

Server exception: java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is:
java.net.ConnectException: Connection refused
java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is:
java.net.ConnectException: Connection refused
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:601)
at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:198)
at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:184)
at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:322)
at sun.rmi.registry.RegistryImpl_Stub.bind(Unknown Source)
at unker.learing.rmi.Server.main(Server.java:24)
Caused by: java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:519)
at java.net.Socket.connect(Socket.java:469)
at java.net.Socket.<init>(Socket.java:366)
at java.net.Socket.<init>(Socket.java:180)
at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFacto
ry.java:22)
at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFacto
ry.java:128)
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:595)
... 5 more


навыть не знаю шо би то мало бути


чесно кажучи не розбирався, але проблема подібна до моєї. і вирішилось це тим, що я прописав у конфігурації зовнішню айпішку
  • 0

#10 Gubtor

    Абориген

  • Користувачі
  • PipPipPipPip
  • 70 повідомлень
  • Стать:Чоловік
  • Місто:L'viv

Відправлено 14.05.2009 – 14:44

Перегляд дописуAleph (25.05.2007 00:29) писав:

Чи може хтось порадити зручне та компактне інтегроване середовище для розробки JAVA програм?
Якщо на перспективу - то NetBeans. Це середовище розробляється Sun Microsystems і є непогана література по ньому. Повністю фріварне. Але так як проект молодий ще є куча багів.
Eclipse - так само повністю безкоштовний продукт. Менше багів порівняно з NetBeans, але розробка ведеться окремою спільнотою, не пов'язаною з Sun. Непоганим його різновидом є EasyEclipse.
  • 0

#11 Lactarius

    Генеральний писар

  • Користувачі
  • PipPipPipPipPipPipPipPipPip
  • 976 повідомлень
  • Стать:Чоловік
  • Місто:Львів

Відправлено 16.05.2009 – 21:16

Все залежить від того що розробляється... Наприклад якщо це програма під платформу гугл андроїд то тільки екліпс.

Для початку можна екліпс... Особисто зараз юзаю зараз НетБінс... Раніше користувався IDEA теж хороше середовище
  • 0

#12 Ma)(imuM

    Ледар

  • Користувачі
  • PipPip
  • 23 повідомлень
  • Стать:Чоловік
  • Місто:Хмельницький

Відправлено 22.06.2009 – 20:20

Хлопці, а по чому краще вчити, коли ти в яві ще чайник? Я раніше на Паскалі та Делфі програмував - було все прекрасно, але тепер перейшов на ЯВУ і багато не зрозумілого з"явилось! Вчу по "JAVA в примерах" (2 видання). Чи може мені звернутись в тему пошуку літератури?

З.І. Що мені сподобалось в яві, так це об"являти змінні в будьякому місці коду! Але не сподобалось чуттєвість до регістру...
  • 0

#13 Ma)(imuM

    Ледар

  • Користувачі
  • PipPip
  • 23 повідомлень
  • Стать:Чоловік
  • Місто:Хмельницький

Відправлено 22.06.2009 – 21:04

Хлопці, а по чому краще вчити, коли ти в яві ще чайник? Я раніше на Паскалі та Делфі програмував - було все прекрасно, але тепер перейшов на ЯВУ і багато не зрозумілого з"явилось! Вчу по "JAVA в примерах" (2 видання). Чи може мені звернутись в тему пошуку літератури?

З.І. Що мені сподобалось в яві, так це об"являти змінні в будьякому місці коду! Але не сподобалось чуттєвість до регістру...
  • 0

#14 Lactarius

    Генеральний писар

  • Користувачі
  • PipPipPipPipPipPipPipPipPip
  • 976 повідомлень
  • Стать:Чоловік
  • Місто:Львів

Відправлено 22.03.2010 – 11:43

Джава краще вчити по С++
  • -1

#15 comdev

    Абориген

  • Користувачі
  • PipPipPipPip
  • 119 повідомлень
  • Місто:Kyiv

Відправлено 26.03.2010 – 10:04

Перегляд дописуLactarius (22.03.2010 11:43) писав:

Джава краще вчити по С++

Не обов'язково, зовсім не обов'язково. Це мови програмування, схожі по синтиксису, але різні по своїй філософії.
По цій же ж логіці можна сказати, що С++ краще вчити по Smalltalk

Перегляд дописуMa)(imuM (22.06.2009 20:20) писав:

Хлопці, а по чому краще вчити, коли ти в яві ще чайник? Я раніше на Паскалі та Делфі програмував - було все прекрасно, але тепер перейшов на ЯВУ і багато не зрозумілого з"явилось! Вчу по "JAVA в примерах" (2 видання). Чи може мені звернутись в тему пошуку літератури?

З.І. Що мені сподобалось в яві, так це об"являти змінні в будьякому місці коду! Але не сподобалось чуттєвість до регістру...


Якщо із англійською все нормально (а професійному програмісту потрібно знати хоча б на технгічному рівні), то можна вчити по оригінальним книгам від Sun (вже Oracle):
http://java.sun.com/...rial/index.html? починати із розділу Trails Covering the Basics

ще непоганий ресурс, але для більш високого рівня http://www.java-course.ru/

і дозволю собі пропіарити свій блоґ ( :rolleyes: ): http://bytes.org.ua/ - там я інколи піднімаю цікаві питання щодо програмування на джава.
  • 0

#16 Lactarius

    Генеральний писар

  • Користувачі
  • PipPipPipPipPipPipPipPipPip
  • 976 повідомлень
  • Стать:Чоловік
  • Місто:Львів

Відправлено 04.04.2010 – 15:23

Цитата

По цій же ж логіці можна сказати, що С++ краще вчити по Smalltalk
От за смолток прошу мені тут не тово. смолток повністю обєктноорієнтовна мова. синтаксис і принципи там зовсім різні. С++ подібна по стилю та логіці програмування. знання С++ дадуть можливість зрозуміти принципи за якими працює джава.

Та й дуже кумедно коли мене старається підбакланити людина, що пафосно показує отаке http://bytes.org.ua/2010/03/19/pobachyla-s...top-translator/
  • 0

#17 МегаРавлик

    Ледар

  • Заблоковані
  • PipPip
  • 26 повідомлень

Відправлено 19.06.2010 – 17:50

Таке питання. Є програмка, типу локального месенджера. Спершу запускається графіка (клас View), потім включається слухання сервера (DoItNow). Чому коли виконується SwingUtilities.invokeLater(new DoItNow(thisWndw)) програма зразу зависає (через отой while(true)) на відміну від new Thread(new DoItNow(thisWndw)).start(). І як можна цьому запобігти, бажано використовуючи перший варіянт з InvokeLater?

Головний код:
public class Client {

	@SuppressWarnings({"static-access", "element-type-mismatch"})
	static public View thisWndw;

	public static void main(String args[]) throws Exception {
		JFrame.setDefaultLookAndFeelDecorated(true);
		SwingUtilities.invokeLater(new Runnable() {

			public void run() {
				try {
					UIManager.setLookAndFeel("org.pushingpixels.substance.api.skin.SubstanceGraphiteLookAndFeel");
				} catch (Exception e) {
					System.out.println("Substance Graphite failed to initialize");
				}
				thisWndw = new View();
				thisWndw.setVisible(true);
				thisWndw.setLocationRelativeTo(null);
			}
		});
		SwingUtilities.invokeLater(new DoItNow(thisWndw));
	}
}

Код класу DoItNow:
public class DoItNow implements Runnable {

	View thisWndw;

	public DoItNow(View thisWndww) {
		thisWndw = thisWndww;
	}

	public void run() {
		while (true) {
		... //Постійне прослуховування. 
		}
	}
}

  • 0

#18 МегаРавлик

    Ледар

  • Заблоковані
  • PipPip
  • 26 повідомлень

Відправлено 19.06.2010 – 20:49

Несподівано мені вдалось самому додуматись <_<

Основний код:
public static void main(String args[]) throws Exception {
		JFrame.setDefaultLookAndFeelDecorated(true);
		SwingUtilities.invokeLater(new Runnable() {

			public void run() {
				try {
					UIManager.setLookAndFeel("org.pushingpixels.substance.api.skin.SubstanceGeminiLookAndFeel");
				} catch (Exception e) {
					System.out.println("Substance Graphite failed to initialize");
				}
				thisWndw = new View();
				thisWndw.setVisible(true);
				thisWndw.setLocationRelativeTo(null);
				new Thread(new DoItNow()).start();
			}
		});
	}
Клас DoItNow (весь час слухає сервер)
public class DoItNow implements Runnable {
	public DoItNow() {
	}
	public void run() {
		while (true) {
			//Якщо поточний клієнт готовий до роботи
			if (Client.thisWndw != null && Client.thisWndw.curClient != null && Client.thisWndw.curClient.isItOpen() == true) {
					COM_DATA b = new COM_DATA();
					//Зчитування інформації з сервера
					b = Client.thisWndw.curClient.getServerData();
					//Перенаправити на обробку
					Client.makeAction(b);
			}
		}
	}
}
Обробляє дані з сервера, перерозподіляє функції
public static void makeAction(final COM_DATA b) throws InterruptedException, InvocationTargetException {
		SwingUtilities.invokeAndWait(new Runnable() {
			public void run() {
			...
			}
		});
	}

  • 0

#19 chipie

    Профі

  • Користувачі
  • PipPipPipPipPipPipPip
  • 301 повідомлень
  • Стать:Жінка

Відправлено 19.06.2010 – 22:13

проблема проста як двері: маємо jar файл. необхідно, щоб прога запускалась на машинах, де немає jre.
тоді або
1. порадьте будь ласка людський конвертер jar->exe. але при цьому вся кросплатформеність іде коту під хвіст.
або
2. як ініціалізувати віртуальну машину?
  • 0

#20 FT232BM

    私は人々嫌い

  • Користувачі
  • PipPipPipPipPipPipPipPipPipPip
  • 3435 повідомлень
  • Стать:Чоловік
  • Місто:Київ-&gt;НТУУ &quot;КПІ&quot;

Відправлено 19.06.2010 – 23:33

Перегляд дописуchipie (19.06.2010 23:13) писав:

проблема проста як двері: маємо jar файл. необхідно, щоб прога запускалась на машинах, де немає jre.
тоді або
1. порадьте будь ласка людський конвертер jar->exe. але при цьому вся кросплатформеність іде коту під хвіст.
або
2. як ініціалізувати віртуальну машину?
Читай
http://en.wikipedia....ki/AOT_compiler
  • 0



Кількість користувачів, що читають цю тему: 1

0 користувачів, 1 гостей, 0 анонімних