Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Вопросы по языку Java  (Прочитано 1366 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн K0feiniK

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
  • жизнь хороша... когда ешь не спеша...
    • Просмотр профиля
Вопросы по языку Java
« : 03 Февраля 2011, 04:28:18 »
Народ, может кто подскажет самый простой способ связать приложение с базой данных не прибегая к IDE ???  :-\

Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
Re: Вопросы по языку Java
« Ответ #1 : 03 Февраля 2011, 05:03:10 »
Hibernate + Maven. Простоые вещи в виме я делал, но вот всё же в джаве без IDE тяжеловато. Тут howto вменяемо выглядит: http://pookey.co.uk/wordpress/archives/66-hibernate-tutorial-part-4-annotations-and-maven

Оффлайн K0feiniK

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
  • жизнь хороша... когда ешь не спеша...
    • Просмотр профиля
Re: Вопросы по языку Java
« Ответ #2 : 03 Февраля 2011, 15:51:32 »
Будем тогда разбираться с Hibernate...

Оффлайн mindmachine

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Вопросы по языку Java
« Ответ #3 : 04 Февраля 2011, 11:58:12 »
Посмотрите, чтоль, еще на MyBatis - без IDE можно обойтись :) Hibernate, конечно перспективнее...

Оффлайн K0feiniK

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
  • жизнь хороша... когда ешь не спеша...
    • Просмотр профиля
Re: Вопросы по языку Java
« Ответ #4 : 04 Февраля 2011, 17:04:55 »
А книжек по Hibernate'у ни у кого случаем нет? или примеров каких незамысловатых? =))

Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
Re: Вопросы по языку Java
« Ответ #5 : 05 Февраля 2011, 07:56:52 »
Официальные доки относительно вменяемы, хоть и не очень полны. Но разобраться как написать пару экспериментов, чтобы понять как оно работает и как им пользоваться, как правило, хватает.

Оффлайн K0feiniK

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
  • жизнь хороша... когда ешь не спеша...
    • Просмотр профиля
Re: Вопросы по языку Java
« Ответ #6 : 17 Февраля 2011, 19:54:50 »
Подскажите, чем лучше и как передать данные из Java-процесса в С-процесс ?

Оффлайн Alexey-S

  • Активист
  • *
  • Сообщений: 296
    • Просмотр профиля
Re: Вопросы по языку Java
« Ответ #7 : 19 Февраля 2011, 01:27:05 »
Подскажите, чем лучше и как передать данные из Java-процесса в С-процесс ?
Смотря что нужно.
В JVM есть JNI - вызов native методов. Реализация методов пишется на С/C++.
Можно организовать socket соединение и обмениваться данными.
Можно поднять Apache Active MQ и для C++ взять ActiveMQ-cpp.

Я раньше пользовался первым методом. Сейчас во всю пользуюсь MQ.
Почему последний вариант?
1) асинхронное выполнение действий;
2) гарантированная доставка сообщений с помощью MQ очередей в обе стороны;
3)  в Java можно взять Camel, чтобы не изобретать велосипед и не писать килограммы кода.

Оффлайн K0feiniK

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
  • жизнь хороша... когда ешь не спеша...
    • Просмотр профиля
Re: Вопросы по языку Java
« Ответ #8 : 19 Февраля 2011, 03:18:07 »
Цитировать
Смотря что нужно.
В JVM есть JNI - вызов native методов. Реализация методов пишется на С/C++.
Можно организовать socket соединение и обмениваться данными.
Можно поднять Apache Active MQ и для C++ взять ActiveMQ-cpp.

Я раньше пользовался первым методом. Сейчас во всю пользуюсь MQ.
Почему последний вариант?
1) асинхронное выполнение действий;
2) гарантированная доставка сообщений с помощью MQ очередей в обе стороны;
3)  в Java можно взять Camel, чтобы не изобретать велосипед и не писать килограммы кода.

а не проще каналы использовать?

Оффлайн Alexey-S

  • Активист
  • *
  • Сообщений: 296
    • Просмотр профиля
Re: Вопросы по языку Java
« Ответ #9 : 21 Февраля 2011, 10:53:09 »
Цитировать
Смотря что нужно.
В JVM есть JNI - вызов native методов. Реализация методов пишется на С/C++.
Можно организовать socket соединение и обмениваться данными.
Можно поднять Apache Active MQ и для C++ взять ActiveMQ-cpp.

Я раньше пользовался первым методом. Сейчас во всю пользуюсь MQ.
Почему последний вариант?
1) асинхронное выполнение действий;
2) гарантированная доставка сообщений с помощью MQ очередей в обе стороны;
3)  в Java можно взять Camel, чтобы не изобретать велосипед и не писать килограммы кода.

а не проще каналы использовать?
Я ведь второй строкой сказал - использовать socket.

А теперь сделаем пример. Java генерирует супер мега XML с помощью SAX или XML Strem Writer. Файл, эдак на 100 мегабайт. Далее, этот XML надо провернуть через XSLT трансформацию, что-то допилить (дайджест + ЭЦП) и вставить в результирующий XML. Полученные данные куда-то отправить по HTTP/FTP протоколу.
Это так - пример, где для XSLT обработки и ЭЦП  всё же лучше писать на C/C++, чем на Java.
То есть в задаче есть исходящий запрос и есть ответ.
Общее время работы всей системы (генерация мега XML + XSLT + ЭЦП + отправка во внешнюю систему) должно укладываться в 5 минут и дается 3 попытки.
Возникает два вопроса
1) какова задержка socket соединения для получения ответа в цепочке Java -> С++ -> Java?
2) что делать в случае потери связи?
Берем MQ. Получаем асинхронный ответ.
Берем Apache Camel и паттерн Dead Letter Channel EIP  http://camel.apache.org/dead-letter-channel.html. Указываем общее время ожидания и количество повторных попыток.
После этого думаем, сколько времени мы потратим на реализации данного паттерна в своем прикладном ПО.

Оффлайн javawiki

  • Новичок
  • *
  • Сообщений: 4
  • sibrisk.blogspot.com Программирование в стиле дзен
    • Просмотр профиля
    • Программирование в стиле дзен
Re: Вопросы по языку Java
« Ответ #10 : 23 Февраля 2011, 17:31:42 »
Народ, может кто подскажет самый простой способ связать приложение с базой данных не прибегая к IDE ???  :-\

Что значит без IDE? Я сам самоучка и знаю что все "крутые" java-программисты очень гордятся тем, что они наизусть знают основы java и весь базовый api( в который входит кстати jdbc 4.0 ). JDBC и есть способ доступа к данным. В винде самый простой способ: создание моста :
import java.sql.*;
 
public class Main {
 
    public static void main(String[] args) throws SQLException
    {
     
        //Class.forName("com.mysql.jdbc.Driver").newInstance();
 // - начиная с java 1.6 уже не обязательно явно загружать драйвер!
        Connection conn = DriverManager.getConnection(
            "jdbc:odbc:db1",
            "user", "password");
         Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT col1 FROM Table1");
 
        while(rs.next())
        {
            System.out.println(rs.getRow() + ". " + rs.getString("col1") + "\t" + rs.getString(1));
        }
 
       if(rs!=null)rs.close();
 
       if(stmt!=null)stmt.close();
        stmt.close();
    }
}
здесь db1 - имя источника (odbcad32.exe)
Это только для изучения(удобно если ты на работе имеешь винду)
В реальности лучше поискать драйвер и написать кроссплатформеную прогу
например mysql sqlserver  и т.п.
« Последнее редактирование: 23 Февраля 2011, 17:38:11 от javawiki »

Оффлайн K0feiniK

  • Автор темы
  • Новичок
  • *
  • Сообщений: 21
  • жизнь хороша... когда ешь не спеша...
    • Просмотр профиля
Re: Вопросы по языку Java
« Ответ #11 : 27 Февраля 2011, 01:14:37 »
Народ, может кто подскажет самый простой способ связать приложение с базой данных не прибегая к IDE ???  :-\

Что значит без IDE? Я сам самоучка и знаю что все "крутые" java-программисты очень гордятся тем, что они наизусть знают основы java и весь базовый api( в который входит кстати jdbc 4.0 ). JDBC и есть способ доступа к данным. В винде самый простой способ: создание моста :
import java.sql.*;
 
public class Main {
 
    public static void main(String[] args) throws SQLException
    {
     
        //Class.forName("com.mysql.jdbc.Driver").newInstance();
 // - начиная с java 1.6 уже не обязательно явно загружать драйвер!
        Connection conn = DriverManager.getConnection(
            "jdbc:odbc:db1",
            "user", "password");
         Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT col1 FROM Table1");
 
        while(rs.next())
        {
            System.out.println(rs.getRow() + ". " + rs.getString("col1") + "\t" + rs.getString(1));
        }
 
       if(rs!=null)rs.close();
 
       if(stmt!=null)stmt.close();
        stmt.close();
    }
}
здесь db1 - имя источника (odbcad32.exe)
Это только для изучения(удобно если ты на работе имеешь винду)
В реальности лучше поискать драйвер и написать кроссплатформеную прогу
например mysql sqlserver  и т.п.

вроде как форум пингвинов...

 

Страница сгенерирована за 0.017 секунд. Запросов: 22.