Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/37: Рейтинг темы: голосов - 37, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 21.07.2008
Сообщений: 21

Кто аргументированно выскажется в пользу Java как серверной технологии?

21.07.2008, 18:44. Показов 7584. Ответов 65
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Кто аргументированно выскажется в пользу Java как серверной технологии? Только не надо про многоплатформенность, котороя еще и не достигнута на 100%
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.07.2008, 18:44
Ответы с готовыми решениями:

Вывести дерево, получаемое с серверной части, написанной с использованием технологии WCF
Добрый день!:) Понимаю что это не к вам но все же может кто поделится своими мыслями. Так вот, выслали тестовое задание такого содержания: ...

Требуется JAVA-разработчик серверной части прилож., удаленно
Для реализации ряда проектов в сфере туризма требуется JAVA-разработчик серверной части приложения. Занятость – от 25 до 50 часов в...

Кто-нибудь писал на технологии TDD
кто нить писал на технологии TDD может кто вкрации раскажет принцип работы или на видео уроки ссыль кинет

65
4 / 4 / 5
Регистрация: 10.05.2007
Сообщений: 1,616
23.07.2008, 18:20
Студворк — интернет-сервис помощи студентам
Так же показателен размер кода для аналогичного выполнения на двух языках и это при том, что в vbs я определял все используемые переменные, если эти определния убрать, то код будет еще более емким.
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Set oConn = CreateObject('ADODB.Connection')
oConn.Open('Driver={Microsoft Access Driver (*.mdb)};DBQ=C:mdb.mdb')
Set oRS = oConn.Execute('SELECT * FROM [table]')
Set oStdOut = WScript.StdOut
sngTimer = Timer()
While Not oRS.EOF
    oStdOut.Write '<tr>'
    For nField = 0 To 8
        oStdOut.Write '<td>' & oRS(nField) & '</td>'
    Next
    oStdOut.Write '</tr>'
    oRS.MoveNext
Wend
oConn.Close
oStdOut.WriteLine Timer() - sngTimer
0
4 / 4 / 5
Регистрация: 10.05.2007
Сообщений: 1,616
23.07.2008, 18:23
2serguei:
Если и будет, то непринципиально, это просто пример такой, что компиляция в байт-код не будет здесь иметь решающего значения для скорости. Просто ASP и VBScript и так весьма неплохо оптимизированы, уж java обгоняют по крайней мере.
0
0 / 0 / 0
Регистрация: 09.06.2008
Сообщений: 51
23.07.2008, 18:27
2t1k
Ты хочешь сказать что откомпилируемая страница работает с такойже скоростью что и интерпретируемая?
0
4 / 4 / 5
Регистрация: 10.05.2007
Сообщений: 1,616
23.07.2008, 18:34
Нет, конечно. Расхождения в ту или иную сторону безусловно будут. На таком простом примере как этот, нельзя показать преимущества и недостатки компиляции перед интерпретацией и наоборот. Просто сложных вычислений внутри маловато. Если перевести данный код на VB.NET, то он если и будет выигрывать по скорости, то не из-за компилируемости в байт-код, а скорее из-за типизации в VB.NET.

Я проводил определенные тестирования, переводя ASP странички в ASP.NET с минимальным переписыванием кода. Выигрыш в таком случае был небольшим. А вот если каждой переменной присваивать наиболее подходящеий ей тип, желательно не variant, тогда ускорение более значительно.
0
0 / 0 / 0
Регистрация: 09.06.2008
Сообщений: 51
23.07.2008, 18:40
2t1k
Сейчас (после выхода ASP.NET) уже можно твердо сказать что в интернет разработке Java явно проигрывает .NET. Старые проекты на Java конечно переводить может быть и не стоит, а вот новые - сам Бог велел начинать только на платформе .NET. Это объективная реальность.
0
Sergey_
23.07.2008, 19:39
2t1k

На мой взгляд, условия приведенного тестирования необъективны. Сравнительно низкая скорость java-программы вызвана тем, что коннекшн проводится через jdbc-odbc-мост, а в качестве базы выбран Access2000.

Попробуйте прогнать тесты, например, для Oracle с использованием нормального оракловского драйвера.
mishgun
23.07.2008, 20:31
Абсолютно согласен с Сергеем.

Мост это самое худшее что можно предложить в этом случае.Тем более что
мост это переход с Java на С на котором написан ODBC и показатель что Java прога работает в два раза медленне ВБ(для которого выбран не ОDBC а OLE) это притянутый за уши.
С уважением и предложением закончить этот диспут
МИШГАН
Для дебютанта.
В таклм случае Мелкомягкие признали поражение своей стратегии на моноплатформенность(типа девиз Окошки форева канул в лету. И потом ну на фига мне знать кучу языков для .НЕТ когда я могу прекрасно обойтись одной Джавой? Мне это непонятно.)
Eugeny
24.07.2008, 09:53
TO: t1k
Для чистоты эксперимента я бы подсчитывал время перед закрытием соединения с базой, т.к. при длительности работы программы порядка 1с. это может быть существенно. В том примере о каком писал я, время формирования отчета было следующее: ASP=3m45s, Servlet=29s
4 / 4 / 5
Регистрация: 10.05.2007
Сообщений: 1,616
24.07.2008, 12:05
2mishgun:
И где ты увидел, что для vbscript выбран OLE? Специально в целях корректного тестирования соединение производится также через ODBC. Ведь строки соединения для java и для vbscript одинаковы.

Далее, разве не видно из тестов, что время начинает выбираться ПОСЛЕ соединения, так что время соединения не при чем.

2eugeny:
Вообще говоря закрытие соединения происходит значительно быстрее его открытия, так что оно не могло повлиять принципиально. Я изменил соответствующим образом код и это действительно так. Время осталось тем же самым с точностью до десятка миллисекунд. Так что я думаю, что у тебя в программе на ASP были допущены какие-то глобальные ошибки. На таких простых вещах как выборка таблицы и вывод ее значений, ASP работает весьма быстро.

Вероятно я в скором времени проведу тестирование на SQL Server (т.к. Oracle у меня нет) с родным jdbc драйвером microsoft.
0
Sergey_
24.07.2008, 12:55
2t1k:

еще одна вещь бросается в глаза при просмотре показанного java-кода. Использование класса Calendar в данном случае совершенно не требуется, так как существует метод System.currentTimeMillis(). Не думаю, что это принципиально влияет на скорость выполнения кода (хотя влияет, конечно), но на размер исходника влияет однозначно. С учетом этого замечания java-код можно сделать существенно более компактным:

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.sql.*;
public class test {
    public static void main(String args[]) throws ClassNotFoundException, SQLException {
        Class.forName('...');
        Connection connection = DriverManager.getConnection('...');
        Statement statement = connection.createStatement();
        ResultSet resultset = statement.executeQuery('SELECT * FROM [table]');
        long timer = System.currentTimeMillis();
        while(resultset.next()) {
            System.out.print('<tr>');
            for (int field = 1; field < 10; field++) {
                System.out.print('<td>' + resultset.getObject(field).toString() + '</td>');
            }
            System.out.print('</tr>');
        }
        connection.close();
        System.out.println(System.currentTimeMillis() - timer);
    }
}
Eugeny
24.07.2008, 13:03
Еще короче
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.sql.*;
public class test {
    public static void main(String args[]) throws Exception
    {
        Class.forName('...');
        Connection connection = DriverManager.getConnection('...');
        ResultSet resultset = connection.createStatement().executeQuery('SELECT * FROM
[table]');
        long timer = System.currentTimeMillis();
        while(resultset.next()) {
            System.out.print('<tr>');
            for (int field = 1; field < 10; field++)
                System.out.print('<td>' +
resultset.getObject(field) + '</td>');
            System.out.print('</tr>');
        }
        connection.close();
        System.out.println(System.currentTimeMillis() - timer);
    }
}
4 / 4 / 5
Регистрация: 10.05.2007
Сообщений: 1,616
24.07.2008, 13:19
По поводу варианта Sergey согласен, хотя все равно на vbscript меньше.

А вот по поводу варианта Eugeny нет, т.к. в результате сокращения количества строк в программе, увеличивается длина некоторых строк, хотя вариант с выбрасыванием только Exception сокращает длину и приемлем в данном случае. Увеличение же длины строк плохо влияет на читабельность текста программы.
0
Sergey_
24.07.2008, 13:51
Насчет того, что конвертация toString() излишняя, Eugeny тоже прав, но это не существенно.
Обязательно напиши о результатах тестирования. Возможно, тогда мы даже приблизимся к ответу на исходный вопрос топика, о котором все уже забыли
0 / 0 / 1
Регистрация: 11.07.2008
Сообщений: 11
24.07.2008, 14:04
Я конечно все понимаю - философские вопросы это замечательно . Но не могли бы вы ответить на мой вопрос. пустьб он и off Topic но другие темы кроме философских походу мало кто читает. Помогите разобраться пожалуйста.

Проблемы возникли с базой и кодировкой.

mysql win2000 JSP .
Использую JBuilder 6. т.е. JDK (jdk1.3.1) и все прочее пришло с ним
Web Server - Apache 1.3 и Tomcat jakarta-tomcat-3.2.3

кодировка - не могу извлечь SELECTom из БД русские поля -они приходят в кодировке Cirilic(DOS) в меню IE. Ввожу инфо в базу из утилиты mysql-я. mysql.exe те. инфо в базе вероятно в кодировке latin1.

Проблема в следующем - при выполнении запроса к базе несмотря на
<%@page contentType='text/html; charset=Windows-1251'
%>
и
Class.forName('org.gjt.mm.mysql.Driver') ;

Properties connInfo = new Properties();
connInfo.put('user', '1');
connInfo.put('password', '1');
connInfo.put('useUnicode', 'true');
connInfo.put('characterEncoding', 'Cp1251');

Имеем в браузере данные из базы не в кодировке cp1251 а в кодировке по терминологии браузера IE Cirilic(DOS) - вероятно это latin1 ......

пробовал ставить в my.ini
default-character-set=win1251
в [mysqld] и [client] - ничего не меняется
данные в базу вводил с командной строки из утилиты mysql.exe. распечатка команды status в mysql приведена ниже.
Вероятно у меня неправильное сочетание кодировки в базе и Jave или я не правильно конвертирую строки в Jave. подскажите плз корректные настройки или действия. Сразу говорю доку
http://people.comita.spb.ru/users/sergeya/java/ruschars.html
я читал. И вроде сделал все по примеру с
http://example.inc.ru/
ней и по примеру с- но вероятно проблема в ДНК .....
Необходимо получить отображение на странице данных из базы в кодировке windows-1251 и корректно работающий INSERT с SELECT, INSERT из javы тоже не работает.... Желательно если такое возможно чтоб в базе инфо хранилась в latin1 чтоб можно было юзать утилиты.

Вот код JSP
Code
1
2
3
4
5
6
7
8
9
10
11
12
 
<%@page import='java.sql.*'%> <%@page import='java.io.*'%> <%@page import='java.util.*'%>
 <%@page contentType='text/html; charset=Windows-1251' %> <html>
 <body> <% try { Class.forName('org.gjt.mm.mysql.Driver');
 Properties connInfo = new Properties(); connInfo.put('user', '1'); 
connInfo.put('password', '1'); connInfo.put('useUnicode', 'true'); connInfo.put('characterEncoding', 'Cp1251');
 Connection con = DriverManager.getConnection('jdbc:mysql://localhost/compbook', connInfo); Statement st = con.createStatement();
 /* do query */ ResultSet rs = st.executeQuery('select id,name,questCount from test'); %>
<TABLE>11 <tr><td>p1</td><td>p2</td></tr>
 <% while (rs.next()) { %> <TR><% for(int i=2;i<=3;i++){%> <TD><%= new String(rs.getString(i).getBytes('latin1'),'Cp1251') %></TD> <TD><%= new String( rs.getString(i) ) %></TD>
 <% } %> </TR> <% } %> </TABLE>
 <% rs.close(); st.close(); } catch (Exception e) { throw (new ServletException(e)); } %>
.

Настройки Mysql
mysql>status дает

Connection id: 1
Current database: compbook
Current user: ODBC@localhost
Server version: 3.23.49-nt
Protocol version: 10
Connection: . via named pipe
Client characterset: latin1
Serve
0
0 / 0 / 1
Регистрация: 11.07.2008
Сообщений: 11
24.07.2008, 14:08
код без тегов (code]

<%

try {
Class.forName('org.gjt.mm.mysql.Driver') ;

Properties connInfo = new Properties();
connInfo.put('user', '1');
connInfo.put('password', '1');
connInfo.put('useUnicode', 'true');
connInfo.put('characterEncoding', 'Cp1251');


Connection con = DriverManager.getConnection('jdbc:mysql://localhost/compbook', connInfo);
Statement st = con.createStatement();
/* do query */
ResultSet rs = st.executeQuery('select id,name,questCount from test');

%>

<TABLE>11
<tr><td>p1</td><td>p2</td></tr>
<% while (rs.next()) { %>
<TR><% for(int i=2;i<=3;i++){%>
<TD><%= new String(rs.getString(i).getBytes('latin1' ),'Cp1251') %></TD>
<TD><%= new String( rs.getString(i) ) %></TD>
<% } %>
</TR>
<% } %>

</TABLE>

<%
rs.close();
st.close();
} catch (Exception e) {
throw (new ServletException(e));
}

%>
0
4 / 4 / 5
Регистрация: 10.05.2007
Сообщений: 1,616
24.07.2008, 15:13
Тестирование SQL Server

таблица
Code
1
2
3
4
5
6
7
8
9
10
11
CREATE TABLE [table] (
    [tinyint] [tinyint] NOT NULL CONSTRAINT [DF_table_tinyint] DEFAULT (1),
    [smallint] [smallint] NOT NULL CONSTRAINT [DF_table_smallint] DEFAULT (1000),
    [int] [int] NOT NULL CONSTRAINT [DF_table_int] DEFAULT (10000),
    [float] [float] NOT NULL CONSTRAINT [DF_table_float] DEFAULT (1.1),
    [decimal] [decimal](18, 0) NOT NULL CONSTRAINT [DF_table_decimal] DEFAULT (1.1),
    [datetime] [datetime] NOT NULL CONSTRAINT [DF_table_datetime] DEFAULT ('02-02-2002 22:02:02'),
    [varchar] [varchar] (50) NOT NULL CONSTRAINT [DF_table_varchar] DEFAULT ('varchar'),
    [bit] [bit] NOT NULL CONSTRAINT [DF_table_bit] DEFAULT (1)
) ON [PRIMARY]
GO
добавлено в нее 1000 строк

test.java
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.sql.*;
public class test {
    public static void main(String args[]) throws ClassNotFoundException, SQLException {
        Class.forName('com.microsoft.jdbc.sqlserver.SQLServerDriver');
        Connection connection = DriverManager.getConnection('jdbc:microsoft:sqlserver://localhost:1433;databasename=test','sa','');
        Statement statement = connection.createStatement();
        ResultSet resultset = statement.executeQuery('SELECT * FROM [table]');
        long timer = System.currentTimeMillis();
        while(resultset.next()) {
            System.out.print('<tr>');
            for (int field = 1; field < 9; field++) {
                System.out.print('<td>' + resultset.getObject(field) + '</td>');
            }
            System.out.print('</tr>');
        }
        connection.close();
        System.out.println(System.currentTimeMillis() - timer);
    }
}
test.vbs
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Set oConn = CreateObject('ADODB.Connection')
oConn.Open('Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=test;User ID=sa;Password=;')
Set oRS = oConn.Execute('SELECT * FROM [table]')
Set oStdOut = WScript.StdOut
sngTimer = Timer()
While Not oRS.EOF
    oStdOut.Write '<tr>'
    For nField = 0 To 7
        oStdOut.Write '<td>' & oRS(nField) & '</td>'
    Next
    oStdOut.Write '</tr>'
    oRS.MoveNext
Wend
oStdOut.WriteLine Timer() - sngTimer
oConn.Close
test.cs
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System;
using System.Data;
using System.Data.SqlClient;
 
public class Test {
    public static void Main (String[] args) {
        SqlConnection connection = new SqlConnection('server=localhost;database=test;uid=sa;pwd=');
        connection.Open();
        SqlCommand command = new SqlCommand('SELECT * FROM [table]',connection);
        SqlDataReader reader = command.ExecuteReader();
        int timer = DateTime.Now.Second * 1000 + DateTime.Now.Millisecond;
        while (reader.Read()) {
            Console.Write('<tr>');
            for (int field = 0; field < 8; field++) {
                Console.Write('<td>' + reader.GetValue(field) + '</td>');
            }
            Console.Write('</tr>');
        }
        Console.Write(DateTime.Now.Second * 1000 + DateTime.Now.Millisecond - timer);
        connection.Close();
    }
}
Результаты

vbscript 570 миллисекунд (OLEDB)
java 910 милисекунд (родной jdbc драйвер от microsoft)
csharp 310 миллисекунд (родной драйвер от microsoft, не OLEDB)
0
0 / 0 / 0
Регистрация: 09.06.2008
Сообщений: 51
24.07.2008, 15:17
... что и требовалось доказать! хотя это и сразу было понятно. откомпилированный код (ASP.NET) всегда работает быстрее интерпретируемого (ASP) и байт-кода (Java)
0
Rina
24.07.2008, 15:18
Попробуй добавить response.setContentType('text/html; charset=windows-1251');
4 / 4 / 5
Регистрация: 10.05.2007
Сообщений: 1,616
24.07.2008, 15:34
2serguei:
Меня, откровенно говоря, тоже несколько удивило чуть ли не двухкратное преимущество csharp над vbscript в таком простом примере и я решил, что дело в использовании специальных объектов для SQL Server, однако если заменить в csharp соответствующие sql объекты на их oledb аналоги, то результаты остаются теми же самыми.

2Rina:
А зачем? Тем паче, что я тестирую консольные приложения.
0
4 / 4 / 5
Регистрация: 10.05.2007
Сообщений: 1,616
24.07.2008, 15:36
2Rina:
или это совет -lexa-?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.07.2008, 15:36

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

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

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

RMI технологии. Java
Задание: 1. Создать серверную часть, на которой создать функцию &quot;Получить дату удаленного компьютера&quot; ,вызываемую удаленно. 2....

Использование технологии CUDA на Java
Добрый день, проконсультируйте плииииз... Биткоин-тема и вечная рекламма &quot;ферм на продажу&quot; заставила задуматься о возможностях...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса Калибровка параметров симбиотической модели: технический обзор Содержание: Введение Постановка проблемы Технические аспекты реализации Процесс внедрения изменений
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы ### Аннотация Представлено исследование по разработке агентной модели микоризной. . .
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии Введение Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru