NTT-X Store d払いご利用でdポイントが貯まる使える!

PHPとASPとJSPのメリット デメリットを教えて下さい

よろしくお願いいたします

A 回答 (1件)

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QWEBプログラムのそれぞれのメリット デメリット

WEBプログラムを覚えたいのですが、
言語がいろいろあり どの言語を選んでいいかが
わかりません

言語のメリット デメリットを教えて下さい
お勧めの言語はどれでしょうか?

以下のどれの回答でもかまいません

・ASP
・ASP.NET
・PHP
・JAVA
・JSP
・サーブレット

Aベストアンサー

○ASP
 時代遅れの技術です。ASP.NETが完全上位互換なので省きます。
○ASP.NET
 基本的にWindowsサーバー上でしか動きません。
 従ってサーバー代が高くつきます。.NETに対応した言語なら何でも使えるというのが強みです。
○JAVA
○JSP
○サーブレット
 Javaはプログラミング言語で、それを使ってweb開発をするための技術がJavaサーブレット、それをASPやPHPのように簡単に扱えるようにしたのがJSPなので、一緒に扱います。
 語弊がありますが、「オープンな.NET」と考えるとイメージが近いです。実行速度は速いのですが、開発環境の構築に時間がかかります。ソフトウェア環境構築は無料で可能です。
 会計処理、大規模オンラインショップなど、エンタープライズ用途によく使われます。ちょっとした掲示板を作るのにJavaを持ち出すのは、ウサギを撃つのに象撃ち銃を持ち出すようなものです。飯の種にするならお勧めですが、趣味のweb開発に使うものではないです。
○PHP
 webサーバーの仕組みを使って動作するので、環境構築が非常に容易です。
 一般的なレンタルサーバーで動く自作プログラムは、PHPとPerlくらいでしょう。
 動作速度でASP、Javaに劣りますが、習得はやたら容易です。開発効率もいいですね。
 設定に依存する問題が多く、原因が分かりづらいトラブルを引き起こしやすいのが難点。

●その他
○Perl
 古い言語で、webプログラムといえばPerlが基本と広く認知されています。
 基本的にはPHPに似ています(こっちのほうが古いので、PHPがPerlに似ているというべきですが)。動作原理も同じです。
 歴史的経緯から言語仕様が複雑になっているので習得はやや大変です。動作原理自体は素朴なのでPHPのように予期しない動作をされてバグを作りこんでしまう事が少ないです。
 動作するレンタルサーバーは最多。
○Ruby
 PHP/Perlと同じような原理で動作します。
 「どこでも動く」とは行きませんが、探せば沢山ある、という程度の普及度です。Perl/PHPよりも後発の「モダン」な言語で、これらには無い強力な機能を備えています。
 言語仕様もシンプルで書き方も分かりやすいのですが、他のプログラムを書ける人を前提としたドキュメントが多いので、教科書選びを失敗すると大混乱するかも。習得自体は簡単で、東大も教養課程(文理共通必修過程)のプログラミング授業に採用しています。
 国産の言語ですが、全世界で通用する程度にはメジャーです。

●結論
 とにかく作りたいならPHP。環境構築の容易さと習得が容易なこと、シェアが大きくどこでも使える事が大きいです。
 もう少しプログラミングというものをしっかり勉強したいならRuby。

○ASP
 時代遅れの技術です。ASP.NETが完全上位互換なので省きます。
○ASP.NET
 基本的にWindowsサーバー上でしか動きません。
 従ってサーバー代が高くつきます。.NETに対応した言語なら何でも使えるというのが強みです。
○JAVA
○JSP
○サーブレット
 Javaはプログラミング言語で、それを使ってweb開発をするための技術がJavaサーブレット、それをASPやPHPのように簡単に扱えるようにしたのがJSPなので、一緒に扱います。
 語弊がありますが、「オープンな.NET」と考えるとイメージが近いです。実行...続きを読む

Qphpとaspの違い? 実力の違い?

webデザインをしている者です。
社内での自社開発もしており、動的なサイトは私が元になるhtmlをcssコーディングし、プログラマーさん達に渡してシステムを乗せてもらう工程になります。
以前の会社も自社開発をしている会社でした。(私はwebデザイナーとして勤務していたため立場は変わりません)
現在所属している会社で作成される動的サイトのソースを前会社のものと比べると、違いがありすぎて困惑しています。

具体的には以下の点があります。

【以前勤めていた会社】
・phpによる開発
・こちらが作成したhtml自体には一切手を加えない(無駄なタグを挟まない)
・システム化されたファイルも見やすく分かりやすい(プログラム素人の私でもhtml部分の修正が容易)
・分割されたソース(共通で使うヘッダー部分等)もフォルダ内に全て格納されており、該当箇所さえ発見できれば修正が容易

【現在の会社】
・aspによる開発
・こちらが作成したhtmlを手渡しシステム化されると、必ず不必要なタグがhtmlに入っている。
(brで改行をいれていたり、テーブルのセルに直接height指定やtext-alignを入れていたり、無駄に<span>タグで囲ってあったり)
・システム化されたファイルの作りが分かりづらく、html部分に修正が入れづらい。
・分割されたソースがどこに格納されているのか全く分からない。(開発側でないと修正できないと言われる)

「これは現在の会社の開発レベルが低いのか、それともphpとaspの違いでしかたがないことなのか」
が分からなくて困惑しているという感じです。
さすがに<div>を<span>で意味もなく囲ってあったときはもの申しましたが、「開発側のソースを奇麗にするとhtml側に<span>がどうしても入ってしまう」と言われてしまいました。
そんなことってあるのでしょうか?

プログラムの知識があまりないため自分で疑問を払拭することができません。
ソースを見なければなんとも言えないことなのかもしれませんが、上記内容から推測できる範囲でプログラマーさん、SEさんのご意見が聞ければ幸いです。

よろしくお願い致します。

webデザインをしている者です。
社内での自社開発もしており、動的なサイトは私が元になるhtmlをcssコーディングし、プログラマーさん達に渡してシステムを乗せてもらう工程になります。
以前の会社も自社開発をしている会社でした。(私はwebデザイナーとして勤務していたため立場は変わりません)
現在所属している会社で作成される動的サイトのソースを前会社のものと比べると、違いがありすぎて困惑しています。

具体的には以下の点があります。

【以前勤めていた会社】
・phpによる開発
・こちらが...続きを読む

Aベストアンサー

<span> じゃなくて <span runat=server>タグですかね?
単なる<span>なら、ちょっと疑問があります。
でも、<span runat=server>タグなら話は別。
勝手に入るというか、入れるというか、「サーバサイドスクリプトが入りますよ」ということなので、ある意味仕方ないとも言えますね。
入っていてもサーバサイド向けのタグなので、クライアントで悪さはしないはずですけども。

たぶん、プログラマは
「ロンドベルは鈴だけ鳴らしてりゃいいんだよ!」と心の中で思っているでしょう(ごめん)

QJSP・サーブレットとphpどちらがいい?

質問1:どちらがおすすめですか?またこのどちらかじゃなくてもいいので、webサイト構築にお勧めの言語をご教示ください

質問2:jspやサーブレットでfacebookやmixiやok waveみたいなサイトを構築できますか?

質問3:スマートフォン向けのサイトの構築でもjspやサーブレットは使えますか?

Aベストアンサー

こんにちは。


1)環境も含め簡単に作るのであればPHPがお勧めです。
Webに特化していますし。

2)もちろん出来ます。

3)もちろん出来ます。
最終的にクライアントに返るのはどんな言語を使っても同じです。(HTMLやCSS等)

Qinterface,extend,implementのちがい

お世話になります、

Javaを勉強しているのですが、
interface,extend,implementの使い分けがわかりません。

私の解釈としては、
(1)interfaceは、グローバル変数の定義、グローバルメソッドの定義(実装はしない)。

(2)extendは、extendクラスを親クラスとして親クラスの機能を使用できる。

(3)implementは…,implementもextendと同じような意味だと解釈しているんですが、違う点は、implementで定義してあるメソッドは、使用しなくても、実装しなければならないという点でしょうか?

とにかくこの3つのを使い分けるコツとかあれば教えてください。
よろしくお願いします。

Aベストアンサー

バラバラに理解してもしょうがないッス。

まず、
(1)interface と implements
(2)class と extends

が対応しているわけっす。

JavaはC++と違って、比較的言語仕様を「簡単」にしたので「多重継承」という
概念がないです。
多重継承っていうのは、複数のクラスを親クラスにして継承するってことですね。

たとえば、 「TextFieldクラス」と「Japaneseクラス」を多重継承すると、
「JTextFieldクラス」ができるっていうのが自然な考え方でしょう?

まぁ、例えば、日本語クラスであれば、getStringLength()メソッドなどが
あったほうが良いでしょうか。
このgetStringLength()メソッドは、2バイト文字も1バイト文字も「1文字」
と数えてくれると言う点で、まさに、日本語クラス用のメソッドだと言えるでしょう。

例えば、Java的に記述すると、、、
class Japanese {
public int getStringLength() {
  ・・・
return strlength;
 }
 ・・・
}

class TextField {
・・・
}

class JTextField extends TextField, extends Japanese {
・・・・
}

C++ではそのように実装するでしょう。
しかし、Javaにはこのような高度な機能はありません。

そこで、生まれた苦肉の策が、「interfaceとimplements」です。

interface Japanese {
public int getStringLength(); // interfaceは実装を含まない!
                 // すなわち「実装の継承」ができるわけではない。
}

class TextField {
・・・
}

class JTextField extends TextField implements Japanese {
・・・・
public int getStringLength() {
  ・・・
return strlength; //implementsの実装を「各クラスで」実装してやる必要がある。
 }
}


結局のところ、Javaでは、複数のクラスを親クラスには持ち得ないため、継承できなかったクラスは「各クラスで実装してやる必要性」があるのです。


ではどのように使うのが効果的か?

なまえのままです。「代表的なインターフェイス」にたいしてinterfaceを使うのが良いと思います。

例えば、プレイヤー系であれば、ビデオ・コンポ・ウォークマン・などにかかわらず、
interface controlpanel {
public play();
public stop();
public next();
public back();
}
というような基本的インターフェイスを「持っているべき」です。

こうすることで、それぞれのクラス宣言の際に、これらの「インターフェイスを持っているべきであり、実装されるべきである」ということを「強く暗示」することができます。
class videoplayer extends player implements controlpanel {
public play() {・・・}
public stop() {・・・}
public next() {・・・}
public back() {・・・}
}

こうすることで、同様のクラスを作成するユーザーは、
「プレイヤー系は、4つ操作が出来るコントロールパネルをインターフェイスとして持つべきなのだな!?」という暗示を受け取り、自分のクラスでもそれを模倣するでしょう。

class mp3player extends player implements controlpanel {
public play() {・・・}
public stop() {・・・}
public next() {・・・}
public back() {・・・}
}

また、これらのクラスを使用するユーザーも、「implements controlpanel」という
表記を見て、「4つの基本操作は押さえられているのだな!」という基本中の基本動作を抑えることが出来ます。

まとめると、クラスに「こういう特徴もたしてください!」「こういう特徴持ってますよ!」という一種の暗示的警告や方向性を与えることができるわけですね。

バラバラに理解してもしょうがないッス。

まず、
(1)interface と implements
(2)class と extends

が対応しているわけっす。

JavaはC++と違って、比較的言語仕様を「簡単」にしたので「多重継承」という
概念がないです。
多重継承っていうのは、複数のクラスを親クラスにして継承するってことですね。

たとえば、 「TextFieldクラス」と「Japaneseクラス」を多重継承すると、
「JTextFieldクラス」ができるっていうのが自然な考え方でしょう?

まぁ、例えば、日本語クラスであれば...続きを読む

QIOException ってどういうときに起こるのでしょうか?

IOException ってどういうときに起こるのでしょうか?

http://www.atmarkit.co.jp/fjava/rensai2/javaent12/javaent12.html
を見て勉強しています。

  catch ( IOException e) {
    System.out.println( "キーボードが故障しているのかもしれません" );
  }

と書いてあります。
ハード(キーボード)が故障しているのを Java のプログラムのレベル(ソフトウェア)で感知できるというのがよくわかりません。「

NumberFormatException の方はわかるのですが・・・

Aベストアンサー

現実的には、キーボードからの入力でIOExceptionが発生することは、
ほとんどあり得ないと思います。
そもそも、キーボードが故障していたとしても、
IOExceptionは投げられないでしょう。
「キーボードが故障しているのかもしれません」というのは、
その記事の著者が冗談で書いたのだと思います。

ではなぜ、try-catchを書かなくてはいけないのか?
InputStreamやBufferedReaderは、
データ入力を抽象化したものだからです。
実際の入力元はキーボードだったり、ファイルだったり、
ネットワーク接続だったりするわけですけど、
InputStreamは、その入力元の情報を持っていないので、
データを読み取る際は常に
IOExceptionをキャッチするコードを書かなくてはいけません。
たとえ、絶対にIOエラーが発生しないストリームだとしても。

さらに付け加えるなら、
そもそも「標準入力=キーボード」であるとは限りません。
(一般的にはキーボードであることが多いですが。)
Javaでは、
System.setIn(InputStream)
を呼び出して、標準入力を変えてしまうことができますし、
標準入力を指定してプログラムを実行することができるOSもあります。

追伸1:
例外をキャッチしたときは、
スタックトレースをプリントすることをおすすめします。
catch (IOException e) {
e.printStackTrace();
}

追伸2:
そのプログラムでIOExceptionを発生させる最も簡単な方法は、
readLine()を呼び出す前に
標準入力(System.in)を閉じてしまうことです。
System.in.close();

現実的には、キーボードからの入力でIOExceptionが発生することは、
ほとんどあり得ないと思います。
そもそも、キーボードが故障していたとしても、
IOExceptionは投げられないでしょう。
「キーボードが故障しているのかもしれません」というのは、
その記事の著者が冗談で書いたのだと思います。

ではなぜ、try-catchを書かなくてはいけないのか?
InputStreamやBufferedReaderは、
データ入力を抽象化したものだからです。
実際の入力元はキーボードだったり、ファイルだったり、
ネットワーク接...続きを読む

Qtomcatとapacheを何で一緒に使いますか?

お疲れ様です。

tomcatとapacheを何で一緒に使いますか?
tomcatはjavaのjsp エンジン、apacheはphpのエンジンですね。
web サーバーとしてxampp 1.6.3a (apache+tomcat) と言う
サーバーを使う事がありますが、なんでapacheとtomcatを
一緒に使いますか。javaとphpを同時に使えますか。
何をするつもりでしょうか。何でそうしますか。

お答え宜しくお願いいたします。

Aベストアンサー

まず初めに、PHPのエンジンは「Zendエンジン」です。ただし、ZendエンジンはApacheと同じサーバマシン内で使用するようになっており、それがまた「小規模用途向き」と言われる所以でもあります。

>tomcatとapacheを何で一緒に使いますか?

負荷分散させるためであり、これがまたJ2EEは「大規模用途向け」と言われる所以でもあります。詳細は、以下のサイト内の図3つを参照してみてください。PHPと違って、Javaでは各サーバソフト(Apache,Tomcat,JBoss,・・)ごとに、ハードウェア(サーバマシン)を分けることが出来ます。もちろん、各サーバソフトは、それ専用のCPUやメインメモリやHDDを備えるということですね。

Javaアプリケーションサーバのクラスタリング機能比較
第7回:Javaアプリケーションサーバのパフォーマンス比較
http://www.thinkit.co.jp/free/compare/14/7/1.html

Tomcat自体にも実際には「Webサーバ」としての機能はありますが、専用ソフトに比べるとあまり実用的でなくオプション的な感じの代物です。詳細は、以下のサイト内にも載っています。

Javaの道 > オープンソース > Tomcat -3.Webサーバとの連携
http://www.javaroad.jp/opensource/js_tomcat3.htm

>javaとphpを同時に使えますか。
>何をするつもりでしょうか。何でそうしますか。

「何で」というよりも、それぞれを使い分けていると考えた方がいいかも。現に、ここの「教えて!goo」のサイトでも、通常は過去ログなどの静的コンテンツを利用するだけだったら、URLのアドレスにはhtmlファイルが使われていたりしますよね。

ところが、質問や回答などの動的コンテンツを利用する際には、ファイルの拡張子がphp3ファイルに変わります。

そんでもって、この質問の上の方にある「ウェブ検索」(「友達に紹介」や」「ブックマーク」の隣にあり、マウスを近づけると水色で「このQ&Aについてウェブで検索する」と表示される所。)をクリックすれば、画面が切り替わり、gooのウェブ検索結果のページに遷移します。(ファイル名はweb.jspで、?から右側のクエリーは、質問のタイトルがエンコードされた形でずら~っと表示されている。)

PHPやJavaのどっちかに統一するんじゃなくって、ただ単に既存のシステムをそのまま利用しているだけだと思います。

まず初めに、PHPのエンジンは「Zendエンジン」です。ただし、ZendエンジンはApacheと同じサーバマシン内で使用するようになっており、それがまた「小規模用途向き」と言われる所以でもあります。

>tomcatとapacheを何で一緒に使いますか?

負荷分散させるためであり、これがまたJ2EEは「大規模用途向け」と言われる所以でもあります。詳細は、以下のサイト内の図3つを参照してみてください。PHPと違って、Javaでは各サーバソフト(Apache,Tomcat,JBoss,・・)ごとに、ハードウェア(サーバマシン)を分ける...続きを読む

Qシンボルが見つかりませんというエラーが理解できません。

以下のようなじゃんけんゲームのプログラムを書いたのですが、「シンボルが見つかりません。」というエラーが表示されるのですが、エラーの意味が理解できず、解決できません。どこが間違っているのか教えていただけませんか。

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.io.File;

public class janken extends Applet
implements Runnable, ActionListener {
private static final int EXTERNAL_BUFFER_SIZE = 128000;

Image image[] = new Image[3];
Thread t;
int index1 = 0;
int index2 = 0;
String msg = "";
String msg1 = "";

boolean state = false;
Button b1 = new Button("ぐー");
Button b2 = new Button("ちょき");
Button b3 = new Button("ぱー");

public void init(){
for(int i = 0; i<=2; i++){
img[i] = getImage(getDocumentBase(),"hanabi" + (i+1) + ".JPG");
}
add(b1);
add(b2);
add(b3);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
msg1 = "結果は・・";

}

public void paint(Graphics g){
g.drawImage(img[index1],350,30,this);
g.drawImage(img[index2],695,30,this);
g.drawString("コンピューター",420,300);
g.drawString("あなた",800,300);
g.drawString(msg,630,320);
g.drawString(msg1,550,320);
}

public void start(){
state = true;
t = new Thread(this);
t.start();

}

public void run(){
while(state){
index1++;
if(index1 == 3){
index1 = 0;
}
index2++;
if(index2 == 3){
index2 = 0;
}
repaint();
try {
Thread.sleep(60);
}catch(InterruptedException e) { }
}
}

public void actionPerformed(ActionEvent e){
if(state == false) {
start();
return;

}
state = false;
if(e.getSource() == b1) {
msg = "ぐー";
index2 = 0;
}

else if(e.getSource() == b2){
msg = "ちょき";
index2 = 1;
}

else if(e.getSource() == b3){
msg = "ぱー";
index2 = 2;
}
check();
repaint();
}

public void check() {
if(index1 == index2) msg ="あいこ";


else if (index1 == 0) {
if(index2 == 2) msg="あなたの勝ち";
else msg ="あなたの負け";
}

else if(index1 == 1) {
if(index2 == 0) msg="あなたの勝ち";
else msg="あなたの負け";
}

else if(index1 == 2) {
if(index2 == 1) msg="あなたの勝ち";
else msg="あなたの負け";
}

}
}

以下のようなじゃんけんゲームのプログラムを書いたのですが、「シンボルが見つかりません。」というエラーが表示されるのですが、エラーの意味が理解できず、解決できません。どこが間違っているのか教えていただけませんか。

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.io.File;

public class janken extends Applet
implements Runnable, ActionListener {
private static final int EXTERNAL_BUFFER_SIZE = 128000;

Image image[] = new Imag...続きを読む

Aベストアンサー

「シンボルを見つけられません。」というエラーの下に何か表示がありませんでしたか?そこにヒントがあると考えられます。
シンボルを見つけられませんといエラーが表示される主な理由は4つあります。
(1)クラス、メソッド、変数などの綴りミスや定義していない変数を使用している可能性がある。
(2)コンストラクタを呼び出すときに、newを忘れている可能性がある。(3)公開されていないメンバーを呼び出している可能性がある。
(4)必要なimport文を記述し忘れている可能性がある。
ここでのあなたのエラーは(1)番ではないでしょうか?上記ではimageとなっている変数がimgになっていますね。
これはエラー表示をよく見ることで意外と簡単に解決できるのです。
ゆっくり丁寧にエラー表示を見るように心がけることが大事ですよ。

QHTMLフォームのSELECTの幅を一定にするためには?

HTMLフォームのSELECTの幅を一定にするためにはどのようにすれば
いいのでしょうか?

CSS等で設定できるとありがたいのですが、やり方がわかりません。

Aベストアンサー

<select style="width: 200px">

Qillegal string offset

php5.3では動いていたプログラムをphp 5.4 で動かしたらwarning illegal string offsetが出て困っています。以下のプログラムでwarningが出ないようにするにはどのようにコーディングすればよいのでしょうか?


$a = array('exists' => 'foo');
if ($a['exists']['non_existent']) {
print 1;
}
print 2;
exit;

Aベストアンサー

isset()を使えばいいと思います

QリクエストからArrayListのデータが取得出来ない

いつもお世話になっております。

表題の通り、リクエストからArrayListのデータが取得出来ないのです。

javaで、
ArrayList cmArray = new ArrayList();
データベースからデータ取得
request.setAttribute("category",cmArray.toArray());

jspで
ArrayList list = new ArrayList();
list = (List)request.getAttribute("category");
と取得しようとしています。
そうすると、java.lang.ClassCastExceptionが発生してしまいます。

どなたか分かる方がいましたら、ご教授下さい。
よろしくお願い致します。

Aベストアンサー

requestには、cmArray.toArray()でObjectの配列が入ってます。
なのでJSPでListで受け取ろうとしてClassCastExceptionが発生しています。

request.setAttribute("category",cmArray);
でいいんではないでしょうか。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング